QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#219177#7589. Game Prediction_LAP_AC ✓462ms22400kbC++142.0kb2023-10-19 08:38:242023-10-19 08:38:25

Judging History

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

  • [2023-10-19 08:38:25]
  • 评测
  • 测评结果:AC
  • 用时:462ms
  • 内存:22400kb
  • [2023-10-19 08:38:24]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 10;
int n, q; long long A[N], S[N];

namespace SegmentTree {
#define lc (u << 1)
#define rc (u << 1 | 1)
    vector<long long> C[N << 2];
    inline vector<long long> merge(vector<long long> A, vector<long long> B) {
        vector<long long> C = A;
        for(auto x : B) { C.emplace_back(x);
            while(C.size() >= 3 && C[C.size() - 3] <= C[C.size() - 2] && C[C.size() - 1] <= C[C.size() - 2]) {
                long long y = C[C.size() - 3] + C[C.size() - 1] - C[C.size() - 2]; C.pop_back(), C.pop_back(), C.pop_back();
                C.emplace_back(y);
            }
        }
        return C;
    }
    inline void Build(int u, int l, int r) {
        if(l != r) {
            int mid = (l + r) >> 1;
            Build(lc, l, mid), Build(rc, mid + 1, r);
            C[u] = merge(C[lc], C[rc]);
        } else C[u].emplace_back(A[l]);
    }
    vector<long long> Ask(int u, int l, int r, int L, int R) {
        if(l >= L && r <= R) return C[u];
        int mid = (l + r) >> 1;
        if(mid >= R) return Ask(lc, l, mid, L, R);
        if(mid < L) return Ask(rc, mid + 1, r, L, R);
        return merge(Ask(lc, l, mid, L, R), Ask(rc, mid + 1, r, L, R));
    }
#undef lc
#undef rc
}

inline void solve(vector<long long> &A, int L, int R) {
    long long res = 0; int flag = 1;
    int l = 0, r = A.size() - 1;
    while(l <= r) {
        if(A[l] >= A[r]) res += flag * A[l ++], flag *= -1;
        else res += flag * A[r --], flag *= -1;
    }
    cout << (S[R] - S[L - 1] + res) / 2 << ' ' << (S[R] - S[L - 1] - res) / 2 << '\n';
}

int main() {
    ios::sync_with_stdio(false), cin.tie(0);

    cin >> n >> q;
    for(int i = 1; i <= n; i ++) cin >> A[i];
    for(int i = 1; i <= n; i ++) S[i] = S[i - 1] + A[i];
    SegmentTree::Build(1, 1, n);

    while(q --) {
        int l, r; cin >> l >> r;
        auto vec = SegmentTree::Ask(1, 1, n, l, r);
        solve(vec, l, r);
    }

    return 0;
}

详细

Test #1:

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

input:

5 4
7 9 3 5 2
1 5
3 5
2 4
1 2

output:

12 14
5 5
12 5
9 7

result:

ok 8 numbers

Test #2:

score: 0
Accepted
time: 107ms
memory: 13016kb

input:

2000 100000
916160905 642147750 160640382 592677268 827782230 946382863 469803806 276899117 644555884 893989224 149522633 136772154 689784509 844549883 654410455 156244052 630203252 164236519 928740589 231174671 24429888 640523209 726192158 502674396 184975673 777606444 601989507 615168340 458853281...

output:

246448147845 225561101174
121071630512 136318653453
105414374625 97929457743
133949412348 129422533778
460708738938 435554533681
83203537771 88973333516
79018926319 97504089754
219194012530 231900960600
282702487011 307848981892
231918629470 210957505856
246266695354 224535660867
265256013851 242426...

result:

ok 200000 numbers

Test #3:

score: 0
Accepted
time: 112ms
memory: 13128kb

input:

2000 100000
465194587 721087516 801632310 618663694 550245630 844243675 346994971 972129393 854143374 294651248 492740508 553773341 659437204 15461041 243501551 421856142 145915335 916966039 27275442 447568009 119764021 481481996 570620615 498510264 863431022 737492538 716548841 709130101 17037480 5...

output:

61362774145 63858704967
133364864424 125933204534
117282997478 110252474105
88575787479 82870258116
61752139979 59084722015
160707294084 149418239202
330346519039 311160920918
83805281508 88222102446
270999671865 254873289793
46184077057 48008720106
241276291803 228530241806
144323297743 14687487154...

result:

ok 200000 numbers

Test #4:

score: 0
Accepted
time: 21ms
memory: 22332kb

input:

100000 100
930475479 385011166 937183543 388160 181244063 918196548 109994729 215303307 534153683 375539773 444284854 500941752 213747563 790652857 749694150 377799239 953419261 341391478 452981784 600267681 270893457 170392055 985594384 92340368 543333996 370140043 402198161 320679127 775105098 115...

output:

14054845252420 14104062424809
13476008204835 13418046728865
2495535712042 2534971404959
4733335790289 4759123187232
7531635085430 7499557138406
8035318593341 7982603659181
16815063101180 16886850347844
3321325928861 3345475376797
3742567416475 3701742782821
14288529150386 14362838119078
115645586008...

result:

ok 200 numbers

Test #5:

score: 0
Accepted
time: 25ms
memory: 22292kb

input:

100000 100
148357608 273220602 883353963 556707521 170135119 468463197 19086424 424437085 68670298 752732818 906910691 416538124 676054226 264340769 24377618 91409544 562988540 941483776 171496212 412865335 386085145 525323867 116910667 619361675 177762351 207495935 897657955 842036540 713582894 292...

output:

18117621153942 18219140523367
3756140494961 3731438628942
5272680840742 5325162341427
21225684925741 21352600188530
4048812177301 4067290544577
4921907469650 4897170221601
10585473797108 10559955106553
1360394730856 1383797090585
4624489089176 4606520139644
1504258198820 1485235887384
2838979416309 ...

result:

ok 200 numbers

Test #6:

score: 0
Accepted
time: 21ms
memory: 22292kb

input:

100000 100
854189626 217172637 262220935 527419697 391794970 223046845 242279524 374414576 841066206 764041255 184902810 789021332 670084122 150483987 895419772 751752727 614119825 198961724 502290551 648245151 14735866 477051752 960237514 515665069 669058412 391674230 283845114 597664658 704443713 ...

output:

12777092767413 12865318150995
15226385687988 15143088277950
6263174871091 6310267425038
906289478956 877358964858
14889698074122 14896147240467
18132280245059 18178452666546
19128439715908 19174858340059
616145603173 595419781471
761925518374 779438164596
3555109359165 3587522818485
3072925727602 30...

result:

ok 200 numbers

Test #7:

score: 0
Accepted
time: 144ms
memory: 22368kb

input:

100000 100000
433459839 718685504 58969990 624440411 479387580 15301390 157297524 733476492 787012670 386857908 24721873 158143766 421342201 150988254 279615548 380475531 561351898 574625909 240436041 871730734 685669138 277668711 168005998 62257784 81101444 655605312 378752653 372084415 573722890 2...

output:

4412904213936 4430490882632
19493791853086 19406495859151
14038276406402 14178869129659
20053024298181 19936017571237
7636589765849 7716833310505
12445512030213 12573124061503
3267366318433 3286409723589
14409365142250 14540012050494
6925119133898 6858224467643
10114323756294 9986847743697
213858231...

result:

ok 200000 numbers

Test #8:

score: 0
Accepted
time: 145ms
memory: 22400kb

input:

100000 100000
537542275 530590431 126822008 253594556 901286312 293229376 252765063 325699423 199057381 318213804 694097936 141848984 347858635 843585538 466042913 808732673 796459889 629598457 54681397 264685936 341605578 378007334 375418942 524951919 439032542 106061592 581889635 832978805 8966646...

output:

17217815723351 17174664560339
20668009364268 20699012243248
3767156321644 3763049165951
17482185325147 17515995772720
21651950529990 21612095615944
10013601135243 9987019920118
19129968660832 19156664940997
11272773055550 11226990656296
21531366290181 21492266824320
19416983869421 19429619499520
726...

result:

ok 200000 numbers

Test #9:

score: 0
Accepted
time: 461ms
memory: 22348kb

input:

100000 200000
728335008 528670929 39065835 237611079 589830251 382884891 930206517 577940818 362970181 847957728 744022244 730816515 966934149 528345487 774422327 91626736 820066846 137836629 790971726 640007244 734159116 649498303 507625237 470040665 962204946 508760939 315232523 896966888 72977288...

output:

7064412495146 7004821606180
10776696864162 10815404493013
3197385235544 3135577070848
7492116773787 7469621975266
14088420286613 14021355812433
2099726518589 2136770432369
476256086877 464076825419
16277034515509 16371870550299
9782818344838 9808635269395
8930610551781 8997233428723
3479056033715 34...

result:

ok 400000 numbers

Test #10:

score: 0
Accepted
time: 462ms
memory: 22304kb

input:

100000 200000
203619399 318356673 19073601 837326481 444464235 363216535 834962020 597547624 663858900 51989153 646104655 98939769 322173365 225641518 201330265 500398941 667621857 973107577 164046603 423255581 426431154 923504304 993778084 352723907 63323676 150186303 835988309 399216377 113054860 ...

output:

15865526951483 15967665130566
5815932924992 5909195551442
1994190214749 2036830242222
514249633474 504969655077
722588063420 716785402215
2732554801712 2748075278968
11619780446104 11765768305548
5505250289242 5450790736675
4075042439456 4069176761381
2919053394131 2958355903331
18938365170345 18817...

result:

ok 400000 numbers

Test #11:

score: 0
Accepted
time: 461ms
memory: 22344kb

input:

100000 200000
231816099 671049986 626154082 614960254 428533161 144437591 69838814 167626985 47930112 186315161 300796430 507352013 220301702 563975276 332931017 826722169 74692015 961014605 595793436 411257584 805517014 339775004 88328680 390605301 361204492 45646274 779405519 30710243 9710977 6030...

output:

7175847758570 7122467926928
17797550325017 17680616769278
658827164744 651571335072
275315853806 266771752087
9930262349650 9999838588287
9202256280002 9259917050375
2034610871882 2006137113575
5484090076203 5448983755483
9031029699908 8999229476424
79713460679 83769790610
5028690643924 493923105525...

result:

ok 400000 numbers