QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#744231 | #7491. 纵使日薄西山 | TheZone | 100 ✓ | 165ms | 8112kb | C++20 | 2.0kb | 2024-11-13 21:15:12 | 2024-11-13 21:15:18 |
Judging History
answer
#include<cstdio>
#include<set>
const int N=1e5+6;
typedef long long LL;
int n,a[N];
struct BIT{
LL b[N];
inline void add(int i,int x){for(;i<N;i+=i&-i)b[i]+=x;}
inline LL ask(int i){LL x=0;for(;i;i^=i&-i)x+=b[i];return x;}
}odd,even;
std::set<int>s;
LL ans=0;
LL get(int x){
if(x<1||x>n)return 0;
auto it=s.find(x);
if(*it==1){
auto nxt=it;++nxt;
if(a[*it]<a[*nxt]){
if(*nxt&1)return odd.ask(*nxt-1)-odd.ask(*it-1);else
return even.ask(*nxt-1)-even.ask(*it-1);
}else return 0;
}
if(*it==n){
auto pre=it;--pre;
if(a[*pre]>=a[*it]){
if(*pre&1)return odd.ask(*it)-odd.ask(*pre-1);else
return even.ask(*it)-even.ask(*pre-1);
}else return a[n];
}
auto pre=it,nxt=it;--pre,++nxt;
if(a[*pre]>=a[*it]&&a[*it]<a[*nxt]){
LL ret=0;
if(*pre&1)ret+=odd.ask(*it-1)-odd.ask(*pre-1);else
ret+=even.ask(*it-1)-even.ask(*pre-1);
if(*nxt&1)ret+=odd.ask(*nxt-1)-odd.ask(*it);else
ret+=even.ask(*nxt-1)-even.ask(*it);
if((*pre&1)==(*it&1)&&(*nxt&1)==(*it&1))ret+=a[*it];
return ret;
}else return 0;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d",a+i),((i&1)?odd:even).add(i,a[i]);
s.insert(-2),s.insert(-1),s.insert(n+2),s.insert(n+3);
s.insert(1);
for(int i=2;i<n;++i)
if(a[i-1]<a[i]&&a[i]>=a[i+1]||a[i-1]>=a[i]&&a[i]<a[i+1])s.insert(i);
s.insert(n);
for(int i:s)
ans+=get(i);
int q;
for(scanf("%d",&q);q--;){
int x,y;
scanf("%d%d",&x,&y);
int nxt=*s.upper_bound(x),pre=*--s.lower_bound(x);
ans-=get(nxt),ans-=get(pre);
nxt=*s.upper_bound(nxt),pre=*--s.lower_bound(pre);
ans-=get(nxt),ans-=get(pre);
if(s.count(x))ans-=get(x),s.erase(x);
s.erase(x-1),s.erase(x+1);
if(x&1)odd.add(x,-a[x]),odd.add(x,y);else
even.add(x,-a[x]),even.add(x,y);
a[x]=y;
for(int i=x-1;i<=x+1;++i){
if(i<1||i>n)continue;
if(i==1||i==n)s.insert(i);else
if(a[i-1]<a[i]&&a[i]>=a[i+1]||a[i-1]>=a[i]&&a[i]<a[i+1])s.insert(i);
}
for(auto l=s.find(pre),r=s.upper_bound(nxt);l!=r;++l)
ans+=get(*l);
printf("%lld\n",ans);
}
return 0;
}
详细
Pretests
Final Tests
Test #1:
score: 5
Accepted
time: 0ms
memory: 3908kb
input:
4 3 6 6 4 3 4 4 3 5 1 8
output:
10 10 13
result:
ok 3 number(s): "10 10 13"
Test #2:
score: 5
Accepted
time: 1ms
memory: 3936kb
input:
80 9 2 9 2 5 9 7 10 4 4 3 6 6 1 9 7 4 9 2 3 2 5 8 4 10 1 5 7 7 1 7 9 10 10 6 8 1 1 6 2 2 8 9 5 6 5 2 5 2 2 7 1 5 7 3 5 1 3 7 1 3 3 1 5 4 7 9 10 5 4 5 7 2 2 1 3 5 4 1 6 41 4 1 9 7 62 8 45 2 1 3 2 3 9 9 22 5 53 8 67 7 35 3 45 2 39 4 80 1 30 2 24 9 30 6 52 3 6 10 41 2 36 10 45 2 66 1 8 7 32 3 18 10 76 ...
output:
221 221 226 225 219 219 219 219 220 220 220 220 218 213 213 213 213 213 214 214 216 216 210 205 205 206 212 214 214 214 216 210 210 210 218 215 221 215 215 215 215
result:
ok 41 numbers
Test #3:
score: 5
Accepted
time: 2ms
memory: 4016kb
input:
542 838931117 389217122 58180519 988298754 728886203 930377296 214616220 26214005 460647141 169755746 374502108 550884674 797755086 499185534 433045581 655100180 833840277 760463479 168299078 838418951 953090068 432493074 431007081 81221586 698945251 199479227 402721549 750189286 517310838 517197840...
output:
155372918178 155395943812 154950493940 154950493940 155403917618 155403917618 155337938881 155283781542 154679852598 154788005868 154947156356 154947156356 154947156356 155515816390 155760423388 155695854732 155513394945 154853760568 153980597851 153980597851 153980597851 154162251578 154162251578 1...
result:
ok 706 numbers
Test #4:
score: 5
Accepted
time: 16ms
memory: 4216kb
input:
5048 521856511 141677525 230794265 373540240 96192402 928004904 841551074 994458915 236616210 957861503 690936558 371201991 501972163 147888711 33618494 956967245 565773640 248366482 693688358 307726537 444548409 98838082 933170055 148874223 183171116 370771940 901162673 207156143 136798119 88228101...
output:
1378836429318 1378836429318 1378836429318 1378770512023 1379043839156 1379426423546 1379422723285 1379422723285 1379270744365 1379657757974 1379657757974 1379657757974 1379222017336 1379222017336 1379222017336 1379222017336 1379222017336 1379011188114 1379011188114 1379000476944 1378818000783 137845...
result:
ok 7082 numbers
Test #5:
score: 5
Accepted
time: 127ms
memory: 8112kb
input:
81340 667340528 848784620 320836023 299324606 93739697 338083710 471189434 992846796 212643328 268072784 278308597 696013641 847076722 640614974 528094825 173184146 425556636 165540576 42678362 594660275 260522984 405175444 360536742 103703926 943200006 245559618 31417441 964155684 754839520 4471141...
output:
22278824145471 22279179108226 22279179108226 22279179108226 22279179108226 22279382739059 22279382739059 22279573110984 22279614603236 22279494978857 22280040245438 22280040245438 22280040245438 22280021907323 22280032822073 22280146644158 22280826596443 22280878519313 22280878519313 22280878519313 ...
result:
ok 41557 numbers
Test #6:
score: 5
Accepted
time: 150ms
memory: 6816kb
input:
98692 1000005 1000010 1000017 1000019 1000020 1000025 1000030 1000036 1000044 1000054 1000055 1000063 1000070 1000077 1000087 1000096 1000103 1000109 1000116 1000119 1000126 1000127 1000130 1000133 1000136 1000144 1000148 1000149 1000151 1000153 1000157 1000165 1000175 1000180 1000185 1000190 100019...
output:
56439424193 56439424193 56439431666 56439431666 56438424360 56438424360 56438423514 56438423514 56438423514 56438416925 56437375386 56436326657 56436326657 56436314047 56435280045 56435280045 56435277691 56434249203 56434251906 56434248571 56434253263 56434251379 56434254647 56434254647 56433200623 ...
result:
ok 95735 numbers
Test #7:
score: 5
Accepted
time: 158ms
memory: 6736kb
input:
94702 1000002 1000008 1000018 1000019 1000020 1000029 1000037 1000044 1000047 1000057 1000066 1000073 1000080 1000087 1000097 1000102 1000107 1000114 1000117 1000120 1000126 1000136 1000146 1000153 1000160 1000170 1000179 1000185 1000191 1000192 1000193 1000196 1000205 1000208 1000214 1000219 100022...
output:
55600820741 55600780483 55599759631 55599735057 55599735057 55600820741 55600820741 55600820741 55599728018 55599729376 55600820741 55600820741 55600820354 55600820354 55600810514 55600810514 55600810514 55599681973 55599681973 55598588626 55598588626 55599681973 55598594262 55598590603 55599681973 ...
result:
ok 99862 numbers
Test #8:
score: 5
Accepted
time: 146ms
memory: 5880kb
input:
95964 1151559 1151549 1151542 1151540 1151533 1151527 1151516 1151508 1151504 1151493 1151489 1151484 1151476 1151468 1151465 1151460 1151459 1151449 1151447 1151447 1151444 1151443 1151432 1151430 1151428 1151426 1151416 1151409 1151407 1151406 1151405 1151400 1151394 1151392 1151388 1151387 115137...
output:
56373838573 56373838573 56373838573 56372702015 56371550037 56372702015 56373838573 56373838573 56373838573 56373815067 56372616331 56373815067 56372713595 56373815067 56372670913 56373815067 56372698071 56372666307 56372738847 56371539243 56370437986 56370437986 56370437986 56371539243 56372738847 ...
result:
ok 99302 numbers
Test #9:
score: 5
Accepted
time: 163ms
memory: 5948kb
input:
95393 1812466 1812465 1812464 1812463 1812460 1812457 1812456 1812454 1812450 1812448 1812446 1812442 1812439 1812435 1812433 1812432 1812430 1812426 1812422 1812422 1812421 1812421 1812418 1812415 1812415 1812415 1812413 1812411 1812409 1812408 1812408 1812408 1812404 1812401 1812400 1812396 181239...
output:
85570947208 85570938570 85570938570 85570935696 85570927586 85569154157 85569154157 85567354184 85567354184 85565616809 85567354184 85567354184 85569154157 85569154157 85570927586 85570935696 85570938570 85570938570 85570947208 85572732672 85572730421 85570939866 85570940665 85570938753 85570961518 ...
result:
ok 91600 numbers
Test #10:
score: 5
Accepted
time: 160ms
memory: 5964kb
input:
96691 386763 386759 386759 386759 386755 386754 386751 386748 386746 386744 386740 386740 386739 386735 386734 386733 386729 386725 386722 386718 386715 386712 386708 386707 386707 386707 386706 386702 386699 386699 386698 386697 386694 386691 386690 386688 386686 386683 386680 386677 386673 386671 ...
output:
19518567198 19518568879 19518152640 19518164588 19518221138 19518229601 19518221138 19518164588 19518152640 19518568879 19518570265 19518569764 19518616447 19518569764 19518570265 19518568879 19518567198 19518605803 19518642651 19518643224 19518643224 19518658343 19518643224 19518643224 19518642651 ...
result:
ok 98706 numbers
Test #11:
score: 5
Accepted
time: 143ms
memory: 5704kb
input:
93938 1127257 1127258 1127259 1127260 1127261 1127262 1127263 1127264 1127265 1127266 1127267 1127268 1127269 1127270 1127271 1127272 1127273 1127274 1127275 1127276 1127277 1127278 1127279 1127280 1127281 1127282 1127283 1127284 1127285 1127286 1127287 1127288 1127289 1127290 1127291 1127292 112729...
output:
51787532010 51787534397 51786439877 51786441076 51786436545 51786430406 51786439157 51786453713 51785387091 51784262880 51783163832 51782082855 51782101814 51782101814 51782089352 51782085843 51782085340 51782085449 51782108436 51782108436 51782108436 51782108436 51782128846 51782128846 51781029222 ...
result:
ok 92739 numbers
Test #12:
score: 5
Accepted
time: 157ms
memory: 5692kb
input:
90324 812910 812910 812906 812905 812902 812896 812894 812887 812883 812879 812875 812871 812866 812859 812852 812849 812848 812848 812846 812845 812839 812833 812831 812824 812824 812818 812817 812810 812810 812806 812805 812799 812793 812793 812788 812783 812780 812775 812774 812774 812767 812762 ...
output:
37938778214 37938778214 37937920739 37937051092 37937920739 37938778214 37938778214 37938817566 37938778214 37938825169 37938778214 37938826243 37938778214 37938778214 37938778214 37938797504 37938778214 37938786832 37938778214 37938763605 37938836113 37938763605 37937891366 37938763605 37937894827 ...
result:
ok 98058 numbers
Test #13:
score: 5
Accepted
time: 162ms
memory: 5916kb
input:
93865 1407968 1407963 1407962 1407956 1407947 1407938 1407935 1407934 1407929 1407925 1407923 1407921 1407916 1407913 1407908 1407902 1407896 1407891 1407884 1407875 1407867 1407867 1407858 1407858 1407858 1407849 1407848 1407843 1407836 1407830 1407824 1407824 1407823 1407820 1407818 1407816 140781...
output:
56176154979 56176278023 56176601798 56176278023 56176278023 56176365617 56175074062 56175074062 56175073098 56173925301 56172720042 56172720042 56172778753 56172844894 56172805638 56171961353 56172044903 56172213946 56172213946 56172213946 56172044903 56171961353 56172805638 56172844894 56171762903 ...
result:
ok 99266 numbers
Test #14:
score: 5
Accepted
time: 148ms
memory: 5804kb
input:
92191 1567249 1567251 1567257 1567261 1567262 1567268 1567274 1567279 1567280 1567282 1567283 1567288 1567293 1567299 1567301 1567307 1567309 1567310 1567313 1567319 1567325 1567327 1567332 1567338 1567343 1567349 1567350 1567355 1567359 1567360 1567363 1567364 1567365 1567366 1567370 1567376 156737...
output:
79684747201 79684747201 79684618371 79684812170 79684812170 79683387918 79682030683 79682030683 79682015074 79680175630 79680159576 79678484773 79678460308 79676918708 79676918708 79676918708 79675145757 79675125283 79675155556 79673283775 79673366278 79673384559 79673384559 79673384559 79673384559 ...
result:
ok 92930 numbers
Test #15:
score: 5
Accepted
time: 153ms
memory: 5668kb
input:
92279 1015078 1015079 1015085 1015091 1015097 1015105 1015111 1015117 1015118 1015124 1015131 1015132 1015133 1015142 1015143 1015146 1015149 1015151 1015156 1015165 1015167 1015170 1015176 1015183 1015189 1015190 1015192 1015194 1015203 1015210 1015213 1015222 1015227 1015236 1015242 1015250 101525...
output:
57451355132 57451433008 57451478246 57450173836 57450173836 57450520307 57450173836 57450173836 57451478246 57451433008 57451355132 57452514226 57452514226 57451618643 57450229770 57450522710 57450229770 57451618643 57452514226 57452514226 57452514226 57452514226 57452514226 57452514226 57452552828 ...
result:
ok 97457 numbers
Test #16:
score: 5
Accepted
time: 155ms
memory: 5812kb
input:
96199 1250583 1250582 1250581 1250574 1250574 1250572 1250571 1250570 1250563 1250559 1250555 1250549 1250542 1250538 1250533 1250533 1250528 1250527 1250521 1250520 1250519 1250515 1250509 1250506 1250503 1250497 1250495 1250491 1250491 1250491 1250486 1250482 1250478 1250475 1250470 1250466 125046...
output:
60261000670 60261000670 60259736646 60261000670 60260987844 60261000670 60261000670 60261000670 60259737537 60259737537 60259737537 60259759592 60259790655 60259790655 60259790655 60258542676 60259790655 60259790655 60259790655 60259759592 60258515475 60258515475 60258515475 60258515475 60258515475 ...
result:
ok 98116 numbers
Test #17:
score: 5
Accepted
time: 132ms
memory: 5808kb
input:
96076 768612 768614 768617 768621 768625 768627 768630 768631 768635 768637 768640 768643 768644 768646 768649 768651 768652 768655 768656 768657 768659 768662 768663 768665 768669 768673 768677 768680 768681 768684 768687 768691 768694 768698 768701 768704 768708 768712 768716 768719 768720 768724 ...
output:
35731554741 35731586194 35731579407 35731586194 35731586194 35731600426 35731586194 35731602658 35731584605 35731602658 35731650693 35731602658 35731586194 35730811001 35731586194 35731632491 35730880306 35731632491 35730888789 35731632491 35731652604 35731632491 35731586194 35731586194 35731638453 ...
result:
ok 92365 numbers
Test #18:
score: 5
Accepted
time: 165ms
memory: 5968kb
input:
93674 2154512 2154534 2154543 2154557 2154560 2154565 2154575 2154585 2154595 2154614 2154635 2154657 2154662 2154675 2154681 2154695 2154707 2154716 2154721 2154723 2154739 2154740 2154755 2154773 2154777 2154788 2154795 2154810 2154828 2154832 2154833 2154853 2154866 2154883 2154898 2154914 215491...
output:
106966247651 106966251327 106966330628 106966315834 106966315834 106966346976 106966346976 106964085209 106964085209 106961839596 106961980547 106961993711 106959619795 106957315847 106957315506 106957313542 106957313542 106955280101 106955280101 106955279562 106955369347 106955369347 106953133309 1...
result:
ok 91112 numbers
Test #19:
score: 5
Accepted
time: 146ms
memory: 5904kb
input:
99923 399693 399694 399695 399696 399697 399698 399699 399700 399701 399702 399703 399704 399705 399706 399707 399708 399709 399710 399711 399712 399713 399714 399715 399716 399717 399718 399719 399720 399721 399722 399723 399724 399725 399726 399727 399728 399729 399730 399731 399732 399733 399734 ...
output:
22465179732 22465217588 22464835068 22464832924 22464832924 22464832924 22464876751 22464875714 22464895465 22464875714 22464876751 22464832924 22464832924 22464832924 22464835068 22465217588 22465179732 22465179732 22465179732 22465188978 22465251471 22464802571 22464837286 22464802571 22465251471 ...
result:
ok 93479 numbers
Test #20:
score: 5
Accepted
time: 154ms
memory: 5980kb
input:
97662 2441553 2441558 2441566 2441577 2441582 2441605 2441610 2441619 2441629 2441633 2441649 2441652 2441669 2441675 2441698 2441706 2441719 2441742 2441749 2441752 2441769 2441773 2441787 2441808 2441830 2441840 2441861 2441880 2441896 2441903 2441917 2441937 2441948 2441950 2441964 2441970 244198...
output:
128540207979 128540273592 128540270904 128540361325 128540361325 128540361325 128537699448 128537698754 128537698754 128535095494 128532524141 128532524615 128532524039 128532603799 128532648877 128532690587 128532686289 128532686289 128532686289 128532686289 128532885602 128532941411 128532940388 1...
result:
ok 93782 numbers