QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#789005#6532. TradingDangXAC ✓86ms6448kbC++201.5kb2024-11-27 19:01:352024-11-27 19:01:36

Judging History

你现在查看的是最新测评结果

  • [2024-11-27 19:01:36]
  • 评测
  • 测评结果:AC
  • 用时:86ms
  • 内存:6448kb
  • [2024-11-27 19:01:35]
  • 提交

answer

#include <bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int mod = 1e9 + 7;
struct node
{
    int v;
    int cnt;
} s[1000005];
bool cmp(node A, node B)
{
    return A.v < B.v;
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int T;
    cin >> T;
    while (T--)
    {
        int n;
        cin >> n;
        int flag = 0;
        for (int i = 1; i <= n; i++)
        {
            cin >> s[i].v >> s[i].cnt;
            flag += s[i].cnt;
        }
        flag = flag / 2;
        sort(s + 1, s + n + 1, cmp);
        int Buy = 0;
        int Sale = 0;
        int sum = 0;
        for (int i = 1; i <= n; i++)
        {
            if (sum <= flag && (sum + s[i].cnt) <= flag)
            {
                Buy += (s[i].cnt * s[i].v);
                sum += s[i].cnt;
            }
            else
            {
                Buy += s[i].v * (flag - sum);
                break;
            }
        }
        sum = 0;
        for (int i = n; i >= 1; i--)
        {
            if (sum <= flag && (sum + s[i].cnt) <= flag)
            {
                Sale += (s[i].cnt * s[i].v);
                sum += s[i].cnt;
            }
            else
            {
                Sale += s[i].v * (flag - sum);
                break;
            }
        }
        cout << (Sale - Buy) << endl;
    }

    return 0;

} /*Orz Orz Orz ACACAC*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3704kb

input:

2
4
10 2
30 7
20 4
50 1
2
1 100
1 1000

output:

100
0

result:

ok 2 number(s): "100 0"

Test #2:

score: 0
Accepted
time: 69ms
memory: 3584kb

input:

100000
8
567091 283679
875020 918237
314684 148083
456411 304598
766056 882388
135371 326501
578773 250140
221306 874117
5
126777 129517
846433 679825
649281 330021
427768 362636
390068 692169
5
657677 231119
941936 991342
901241 15133
660372 970476
698958 209343
10
478657 163635
752788 819629
82110...

output:

974212656325
422801098045
290923055490
905027520640
1029190811448
678507966352
198954424176
854342493784
14257598794
988991921252
588571689752
736448232231
1193610112068
190497179448
0
931985141715
607845823133
684919543290
764055201744
1066998333316
404829201204
908985930972
518916157132
0
18970544...

result:

ok 100000 numbers

Test #3:

score: 0
Accepted
time: 59ms
memory: 3580kb

input:

1000
943
72269 378475
977924 359650
767015 807123
588692 74765
415453 560758
928758 428092
806008 738436
208619 75109
42177 669012
962462 479504
590660 677629
539374 152571
248543 325297
781505 297957
16148 319989
551104 444452
227850 215480
851246 491844
513358 739037
788832 628842
60861 351413
302...

output:

114201255531485
53276337328736
92046111258743
103154270867625
105744931013248
32643398141462
88110706162215
47935111239811
15241903293912
111168188920159
40432059191865
31710483882560
76824850524735
5062330895031
699195293530
102704425622910
62567748918438
111989972317852
70973066348865
748113762268...

result:

ok 1000 numbers

Test #4:

score: 0
Accepted
time: 86ms
memory: 6448kb

input:

10
3648
321905 608337
913130 232679
807842 182580
108666 826799
649762 754578
461310 612685
351739 113156
227668 993674
779322 394130
762123 235998
591912 252590
648451 525516
758596 858327
444142 632425
993345 476968
987323 970898
664888 739790
582325 596631
537216 606677
30160 316873
32104 109750
...

output:

456752959290141
11993792944026063
11554678993093858
9453515389111085
8600545413208495
5664061450260769
2045423469498213
7668923751962719
2600263474973873
3635314464114077

result:

ok 10 numbers