QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#744231#7491. 纵使日薄西山TheZone100 ✓165ms8112kbC++202.0kb2024-11-13 21:15:122024-11-13 21:15:18

Judging History

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

  • [2024-11-13 21:15:18]
  • 评测
  • 测评结果:100
  • 用时:165ms
  • 内存:8112kb
  • [2024-11-13 21:15:12]
  • 提交

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;
}

Details

Tip: Click on the bar to expand more detailed information

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