QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#327699#4802. Ternary SearchyhdddAC ✓309ms28372kbC++143.1kb2024-02-15 12:20:502024-02-15 12:20:51

Judging History

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

  • [2024-02-15 12:20:51]
  • 评测
  • 测评结果:AC
  • 用时:309ms
  • 内存:28372kb
  • [2024-02-15 12:20:50]
  • 提交

answer

#include<bits/stdc++.h>
#define int long long
#define mod 998244353
using namespace std;
const int maxn=200010;
const int inf=1e18;
inline int read(){
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch-48);ch=getchar();}
	return x*f;
}
bool Mbe;

int n,a[maxn];
int ans[maxn],res;
int b[maxn];
namespace bit{
	int c[maxn];
	void init(){memset(c,0,sizeof(c));}
	int lowbit(int x){return x&(-x);}
	void updata(int x,int w){
		while(x<=n){
			c[x]+=w;
			x+=lowbit(x);
		}
	}
	int query(int x){
		int res=0;
		while(x){
			res+=c[x];
			x-=lowbit(x);
		}
		return res;
	}
}
int l[maxn];
#define pii pair<int,int>
namespace sgt{
	pii tree[maxn<<2];
	int tag[maxn<<2];
	#define mid (l+r>>1)
	#define ls nd<<1
	#define rs nd<<1|1
	void build(int nd,int l,int r){
		tag[nd]=0;
		if(l==r){
			tree[nd]={inf,l};
			return ;
		}
		build(ls,l,mid),build(rs,mid+1,r);
		tree[nd]=min(tree[ls],tree[rs]);
	}
	void push(int nd){
		if(!tag[nd])return ;
		tree[ls].first+=tag[nd],tag[ls]+=tag[nd];
		tree[rs].first+=tag[nd],tag[rs]+=tag[nd];
		tag[nd]=0;
	}
	void modif(int nd,int l,int r,int p,int w){
		if(l==r){
			tree[nd].first=w;
			return ;
		}
		push(nd);
		if(p<=mid)modif(ls,l,mid,p,w);
		else modif(rs,mid+1,r,p,w);
		tree[nd]=min(tree[ls],tree[rs]);
	}
	void updata(int nd,int l,int r,int ql,int qr,int w){
		if(ql>qr)return ;
		if(l>=ql&&r<=qr){
			tree[nd].first+=w,tag[nd]+=w;
			return ;
		}
		push(nd);
		if(ql<=mid)updata(ls,l,mid,ql,qr,w);
		if(qr>mid)updata(rs,mid+1,r,ql,qr,w);
		tree[nd]=min(tree[ls],tree[rs]);
	}
}
void work(){
	n=read();
	for(int i=1;i<=n;i++)b[i]=a[i]=read();
	sort(b+1,b+n+1);
	for(int i=1;i<=n;i++)a[i]=lower_bound(b+1,b+n+1,a[i])-b;
	memset(ans,0x3f,sizeof(ans));
	bit::init();res=0;
	for(int i=1;i<=n;i++){
		bit::updata(a[i],1);
		l[i]=i-bit::query(a[i]);
	}
	sgt::build(1,1,n);bit::init();
	for(int i=1;i<=n;i++){
		sgt::modif(1,1,n,a[i],l[i]);
		sgt::updata(1,1,n,1,a[i]-1,-1);
		bit::updata(a[i],1);
		res+=bit::query(a[i]-1);
		while(!sgt::tree[1].first){
			int p=sgt::tree[1].second;
			bit::updata(p,-1);
			sgt::modif(1,1,n,p,inf);
		}
		ans[i]=min(ans[i],res);
		// cout<<res<<" "<<bit::query(n)<<"\n";
	}
	for(int i=1;i<=n;i++)a[i]=n-a[i]+1;
	bit::init();res=0;
	for(int i=1;i<=n;i++){
		bit::updata(a[i],1);
		l[i]=i-bit::query(a[i]);
	}
	sgt::build(1,1,n);bit::init();
	for(int i=1;i<=n;i++){
		sgt::modif(1,1,n,a[i],l[i]);
		sgt::updata(1,1,n,1,a[i]-1,-1);
		bit::updata(a[i],1);
		res+=bit::query(a[i]-1);
		while(!sgt::tree[1].first){
			int p=sgt::tree[1].second;
			bit::updata(p,-1);
			sgt::modif(1,1,n,p,inf);
		}
		ans[i]=min(ans[i],res);
		// cout<<res<<" "<<bit::query(n)<<"\n";
	}
	for(int i=1;i<=n;i++)printf("%lld\n",ans[i]);
}

// \
444

bool Med;
int T;
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	
//	ios::sync_with_stdio(0);
//	cin.tie(0);cout.tie(0);
	
//	cerr<<(&Mbe-&Med)/1048576.0<<" MB\n";
	
	T=1;
	while(T--)work();
}

详细

Test #1:

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

input:

9
11
4
5
14
1
9
19
8
10

output:

0
0
0
0
2
3
3
6
7

result:

ok 9 numbers

Test #2:

score: 0
Accepted
time: 2ms
memory: 14052kb

input:

1
167959139

output:

0

result:

ok 1 number(s): "0"

Test #3:

score: 0
Accepted
time: 2ms
memory: 14048kb

input:

10
802030518
983359971
96204862
640274071
796619138
71550121
799843967
598196518
402690754
446173607

output:

0
0
0
1
1
3
3
5
7
9

result:

ok 10 numbers

Test #4:

score: 0
Accepted
time: 0ms
memory: 13992kb

input:

200
280383943
994080326
443906342
107926501
414713819
45732490
370693588
928126378
581740643
189811400
142817640
218386999
447997927
640003704
637428425
151698689
209462128
155599305
390080477
958251194
515653943
751042490
1186761
443171900
968975479
829084542
462837689
157692260
607049612
606116398...

output:

0
0
0
0
1
1
3
4
5
8
12
15
17
18
19
25
30
35
38
38
41
42
54
60
60
62
69
81
87
93
109
112
124
126
139
148
152
164
169
180
187
193
211
221
226
244
244
252
264
273
286
307
316
328
339
358
378
392
408
416
439
445
447
463
490
503
521
536
547
567
594
619
638
638
659
668
702
724
729
758
772
777
816
836
845
...

result:

ok 200 numbers

Test #5:

score: 0
Accepted
time: 0ms
memory: 13984kb

input:

205
798721503
163087712
141733092
316449050
127486543
148708227
646902722
254007921
648511970
807308399
362190286
356609247
109012359
421274742
647319513
34648738
573893368
682755343
757300027
674077117
324958818
106483343
305773689
837270774
883136402
847234810
756696363
354615040
58759846
32739626...

output:

0
0
0
0
1
2
2
3
3
3
6
10
16
19
22
23
28
34
35
37
45
49
52
61
64
65
69
80
86
86
90
95
105
109
112
113
120
133
136
136
152
166
180
181
196
214
231
245
266
287
297
309
330
341
358
368
383
387
393
414
434
448
456
484
494
506
521
534
543
551
561
596
621
626
634
644
655
692
732
743
750
767
807
846
869
876...

result:

ok 205 numbers

Test #6:

score: 0
Accepted
time: 2ms
memory: 13976kb

input:

300
310486422
145995805
744831366
913444383
54589620
760840937
351438066
497043991
437781614
854981783
137693561
940050335
22692948
779922082
713507093
773173557
700078081
889701510
709956997
620732070
535136113
428608043
656183847
627784826
348865620
634573459
271461607
622653937
662713549
35111166...

output:

0
0
0
0
1
2
3
5
7
9
11
14
15
19
22
25
27
33
36
38
40
41
45
49
50
55
55
60
69
71
76
80
99
110
110
116
117
125
148
151
175
182
208
223
229
245
256
259
280
285
302
314
332
337
345
369
380
398
403
405
413
447
468
484
494
511
537
550
555
585
601
616
637
659
664
695
715
730
755
757
762
777
787
805
842
860...

result:

ok 300 numbers

Test #7:

score: 0
Accepted
time: 0ms
memory: 14040kb

input:

400
418345904
425283570
502048611
949470422
1539681
816939105
835973188
548395262
912622971
892988664
137695077
200974194
416058059
46966392
717454596
508236934
577018523
271703565
404875844
116208843
795979997
232130698
201391686
396794371
873677110
643916648
979303165
209135495
365323814
220296329...

output:

0
0
0
0
0
1
3
4
7
8
8
9
11
11
16
20
25
28
32
33
43
47
50
55
67
73
73
83
90
98
99
103
110
116
124
135
142
160
175
182
195
197
210
216
217
222
228
234
254
268
295
306
334
337
349
357
383
388
392
420
441
460
473
474
480
491
506
532
548
549
572
589
629
635
674
700
711
714
744
773
797
809
815
852
860
895...

result:

ok 400 numbers

Test #8:

score: 0
Accepted
time: 13ms
memory: 14272kb

input:

10000
654266585
918195389
61806003
512260326
35440115
595032690
353979552
32592347
712550231
380796590
139710715
828841723
115308806
675515525
910499939
780014628
924148821
719010926
731425929
381219228
963983190
359044179
76245693
524823828
890447664
856974623
751508756
830808517
963022804
54360656...

output:

0
0
0
1
1
2
3
5
5
7
10
10
14
16
16
18
18
22
26
34
34
45
54
57
64
70
76
82
87
94
97
97
104
108
118
125
136
143
143
159
162
165
169
172
181
202
210
213
224
230
240
255
257
277
279
307
337
342
364
367
377
403
408
416
428
459
496
504
533
534
554
571
577
595
630
637
666
684
723
740
782
797
818
840
864
87...

result:

ok 10000 numbers

Test #9:

score: 0
Accepted
time: 143ms
memory: 21392kb

input:

100000
909264242
651840489
623350850
547495386
693908264
894663677
90585843
745747150
871758382
121892899
769215576
332202967
626472418
629926442
365356165
588776397
879320123
676708911
253241624
334264710
58088451
743496068
4060883
166883807
81383194
778842188
617677263
814376024
454099047
56897081...

output:

0
0
0
0
0
0
2
3
4
8
9
13
16
19
24
27
27
29
37
43
43
52
52
54
56
70
76
77
83
89
90
92
101
106
116
127
141
146
160
171
186
192
198
207
207
208
229
247
247
268
281
297
310
323
326
339
359
365
379
395
409
417
422
436
455
465
474
493
506
511
541
575
590
618
631
646
677
689
725
742
751
782
786
801
837
867...

result:

ok 100000 numbers

Test #10:

score: 0
Accepted
time: 220ms
memory: 27852kb

input:

150000
593610248
98376074
458908422
957965730
959127651
759669531
99902673
579848604
606011447
768639951
2128743
605405193
956486615
768041769
469873926
191835294
294470724
379037444
647254616
952534726
633061613
309062234
79309702
807129949
388586177
560947476
481828902
199198541
871486573
16017326...

output:

0
0
0
0
0
2
2
3
5
9
9
12
17
19
23
24
26
29
35
44
50
52
52
61
66
73
80
82
94
97
107
115
118
133
139
146
158
167
176
186
191
204
206
225
234
237
249
259
276
280
295
318
327
333
347
355
374
375
380
380
388
397
397
422
450
450
480
496
531
547
583
619
622
634
660
688
709
713
730
768
785
815
836
847
858
8...

result:

ok 150000 numbers

Test #11:

score: 0
Accepted
time: 287ms
memory: 28244kb

input:

190000
140414614
406007592
298567632
605924836
708675375
600753299
494271070
566246098
495997778
483573743
427426250
494979459
689919340
338248109
254006654
673303859
66362765
710585447
86532982
318050353
417362365
723383976
355024957
42913831
928066077
617517952
502644865
816067465
377578850
560308...

output:

0
0
0
1
1
1
1
2
3
3
3
6
12
12
12
20
20
30
31
34
39
50
55
55
65
70
76
77
85
91
102
104
113
120
125
141
157
165
174
185
194
202
214
223
240
250
260
272
274
295
302
323
328
335
336
343
369
377
385
385
413
436
453
480
488
504
507
535
541
545
566
600
610
634
656
688
712
716
737
744
782
783
817
848
862
87...

result:

ok 190000 numbers

Test #12:

score: 0
Accepted
time: 309ms
memory: 28308kb

input:

200000
853818360
128916365
670632329
764180415
686020796
260618375
670803846
624457033
519234961
658913000
463658733
882826700
119473262
180810470
69568421
356237381
713120443
348959227
728080803
580919147
318327296
565941028
228967961
653195229
533937115
990818044
505922232
542675502
258087880
4750...

output:

0
0
0
0
1
2
3
4
5
8
8
12
15
16
16
19
25
28
29
32
38
42
50
52
57
57
64
70
82
91
95
96
114
128
141
151
157
161
170
185
187
201
209
218
224
238
244
247
252
271
278
292
299
319
337
337
348
351
362
370
377
381
392
407
421
439
446
462
474
482
514
519
551
566
571
579
599
633
635
667
692
694
724
735
742
778...

result:

ok 200000 numbers

Test #13:

score: 0
Accepted
time: 67ms
memory: 21392kb

input:

100000
607065123
607065538
607068747
607072791
607077748
607083409
607087209
607089384
607091039
607103510
607113399
607134718
607150727
607154096
607154174
607164161
607203894
607217028
607218498
607243574
607250282
607264707
607276495
607278511
607285355
607293720
607295032
607301598
607312533
607...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 100000 numbers

Test #14:

score: 0
Accepted
time: 30ms
memory: 17052kb

input:

50000
363946188
363946571
363970783
364019687
364035920
364072248
364076189
364102642
364118997
364197249
364232591
364260040
364285206
364304417
364318219
364337062
364351969
364376098
364377772
364384165
364406063
364428419
364438839
364447089
364449160
364478599
364489207
364516989
364523776
3645...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 50000 numbers

Test #15:

score: 0
Accepted
time: 155ms
memory: 28232kb

input:

200000
34955275
34958003
34968771
34979259
35000286
35009855
35011625
35014972
35019574
35020104
35021021
35032450
35035638
35055084
35060098
35065979
35069608
35074708
35079739
35084342
35085847
35088767
35100982
35109907
35111017
35118812
35121011
35122599
35130365
35132068
35135671
35137300
35139...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 200000 numbers

Test #16:

score: 0
Accepted
time: 147ms
memory: 28372kb

input:

200000
50155862
50155954
50156659
50157332
50160405
50161798
50175654
50177951
50191144
50192470
50199899
50218953
50230226
50236501
50237031
50242991
50244011
50246269
50246420
50256588
50258513
50263286
50274527
50276700
50284837
50292305
50295349
50297461
50305832
50316674
50330093
50333051
50334...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 200000 numbers

Test #17:

score: 0
Accepted
time: 220ms
memory: 28252kb

input:

200000
383784241
383784895
383787460
383789641
383797874
383780901
383772173
383768131
383767812
383755451
785557495
785557552
785564596
785568438
785577267
785555446
785534954
785528611
785527753
785517557
520568831
520571298
520586261
520598044
520606280
520562507
520548131
520546949
520542492
520...

output:

0
0
0
0
0
0
0
0
0
0
5
10
10
10
10
15
21
28
35
35
35
36
38
41
45
45
45
45
45
45
55
66
78
91
105
115
124
132
139
145
160
176
190
190
190
195
201
208
216
225
225
225
225
225
225
230
236
243
251
260
270
280
290
300
310
325
341
358
376
395
445
486
488
491
495
495
495
495
495
495
495
496
498
501
505
505
5...

result:

ok 200000 numbers