QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#219177 | #7589. Game Prediction | _LAP_ | AC ✓ | 462ms | 22400kb | C++14 | 2.0kb | 2023-10-19 08:38:24 | 2023-10-19 08:38:25 |
Judging History
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