QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#389110#8553. Exchanging Kubicucup-team197#AC ✓32ms3912kbC++111.7kb2024-04-14 02:31:192024-04-14 02:31:19

Judging History

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

  • [2024-04-14 02:31:19]
  • 评测
  • 测评结果:AC
  • 用时:32ms
  • 内存:3912kb
  • [2024-04-14 02:31:19]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define fi first
#define se second
int n;
ll a[2005];
ll b[2005];
void fit(int l,int r,ll frog){
	for(int i=l; i<=r ;i++) frog+=a[i];
	if(frog<0) return;
	a[r]-=frog;
}
ll qry(int l,int r){
	cout << "? " << l << ' ' << r << endl;
	ll res;cin >> res;return res;
}
void solve(){
	cin >> n;
	for(int i=1; i<=n ;i++){
		a[i]=qry(i,i);
	}
	vector<pair<int,int> >v;
	for(int i=1; i<=n ;i++){
		if(a[i]>0){
			if(v.empty() || v.back().se!=i-1) v.push_back({i,i});
			else v.back().se=i;
		}
	}
	if(v.empty()) return;
	for(int i=1; i<v[0].fi ;i++) a[i]=-1e14;
	for(int i=v.back().se+1; i<=n ;i++) a[i]=-1e14;
	while(v.size()>1){
		int m=v.size();
		int god=0;
		for(int i=0; i<m ;i++){
			b[i]=0;
			for(int j=v[i].fi; j<=v[i].se ;j++){
				b[i]+=a[j];
			}
			if(b[i]<b[god]) god=i;
		}
		bool done=false;
		if(!done && god!=m-1){
			ll res=qry(v[god].fi,v[god+1].se);
			if(res!=b[god+1]){
				done=true;
				fit(v[god].se+1,v[god+1].fi-1,b[god]+b[god+1]-res);
				v[god+1].fi=v[god].fi;
				v.erase(v.begin()+god,v.begin()+god+1);
			}
			else fit(v[god].se+1,v[god+1].fi-1,b[god]);
		}
		if(!done && god!=0){
			ll res=qry(v[god-1].fi,v[god].se);
			if(res!=b[god-1]){
				done=true;
				fit(v[god-1].se+1,v[god].fi-1,b[god-1]+b[god]-res);
				v[god-1].se=v[god].se;
				v.erase(v.begin()+god,v.begin()+god+1);
			}
			else fit(v[god-1].se+1,v[god].fi-1,b[god]);
		}
		if(!done) v.erase(v.begin()+god,v.begin()+god+1);
	}
}
int main(){
	ios::sync_with_stdio(false);
	int t;cin >> t;
	while(t--){
		solve();
		cout << "! ";
		for(int i=1; i<=n ;i++) cout << a[i] << ' ';
		cout << endl;
	}
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3880kb

input:

2
3
1
0
1
1
5
2
0
3
0
5
4
5

output:

? 1 1
? 2 2
? 3 3
? 1 3
! 1 -1 1 
? 1 1
? 2 2
? 3 3
? 4 4
? 5 5
? 1 3
? 1 5
! 2 -1 3 -4 5 

result:

ok ok (2 test cases)

Test #2:

score: 0
Accepted
time: 17ms
memory: 3888kb

input:

10000
1
718876398
1
0
1
0
1
0
1
938356223
1
857157125
1
0
1
0
1
0
1
0
1
0
1
965894497
1
0
1
626061677
1
642094813
1
107398046
1
0
1
0
1
0
1
287188651
1
0
1
345108193
1
0
1
0
1
714952783
1
0
1
325760098
1
0
1
800487422
1
322806679
1
0
1
0
1
0
1
866952779
1
741483102
1
492063609
1
0
1
833448280
1
0
1
...

output:

? 1 1
! 718876398 
? 1 1
! 0 
? 1 1
! 0 
? 1 1
! 0 
? 1 1
! 938356223 
? 1 1
! 857157125 
? 1 1
! 0 
? 1 1
! 0 
? 1 1
! 0 
? 1 1
! 0 
? 1 1
! 0 
? 1 1
! 965894497 
? 1 1
! 0 
? 1 1
! 626061677 
? 1 1
! 642094813 
? 1 1
! 107398046 
? 1 1
! 0 
? 1 1
! 0 
? 1 1
! 0 
? 1 1
! 287188651 
? 1 1
! 0 
? 1 1...

result:

ok ok (10000 test cases)

Test #3:

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

input:

1052
9
167536100
0
373372185
0
427949326
442758705
102715118
0
0
373372185
973423149
9
248442934
306962195
570791475
593033322
0
582850731
559429390
0
120053133
1142280121
2780526396
10
785691778
0
981032824
0
0
592503870
0
0
0
0
1112480382
1112480382
10
0
737563509
985502704
427600980
0
805973591
7...

output:

? 1 1
? 2 2
? 3 3
? 4 4
? 5 5
? 6 6
? 7 7
? 8 8
? 9 9
? 1 3
? 3 7
! 167536100 -167536100 373372185 -373372185 427949326 442758705 102715118 -100000000000000 -100000000000000 
? 1 1
? 2 2
? 3 3
? 4 4
? 5 5
? 6 6
? 7 7
? 8 8
? 9 9
? 6 9
? 1 7
! 248442934 306962195 570791475 593033322 -80983651 5828507...

result:

ok ok (1052 test cases)

Test #4:

score: 0
Accepted
time: 18ms
memory: 3592kb

input:

105
98
0
622130364
0
603542943
491665548
0
535594695
169182905
269002770
437838930
534070706
783210752
0
914335037
560159875
0
216552904
666995724
0
0
0
753649796
0
0
0
779352417
0
121063647
0
496743470
0
4104890
0
648149367
0
965790695
732089017
0
0
0
0
6701195
0
0
0
0
750231085
0
0
511641740
36964...

output:

? 1 1
? 2 2
? 3 3
? 4 4
? 5 5
? 6 6
? 7 7
? 8 8
? 9 9
? 10 10
? 11 11
? 12 12
? 13 13
? 14 14
? 15 15
? 16 16
? 17 17
? 18 18
? 19 19
? 20 20
? 21 21
? 22 22
? 23 23
? 24 24
? 25 25
? 26 26
? 27 27
? 28 28
? 29 29
? 30 30
? 31 31
? 32 32
? 33 33
? 34 34
? 35 35
? 36 36
? 37 37
? 38 38
? 39 39
? 40 4...

result:

ok ok (105 test cases)

Test #5:

score: 0
Accepted
time: 31ms
memory: 3664kb

input:

10
911
0
0
318490282
367703800
0
447141340
683983129
0
319014522
385248618
0
0
0
453686281
0
0
503449442
0
451161866
0
422033116
892391115
0
0
0
0
0
0
116949378
0
305018897
441460055
390798833
643328028
0
0
785497871
0
0
0
0
702685168
0
177748037
150437291
920782161
719254975
0
519494673
555035366
0...

output:

? 1 1
? 2 2
? 3 3
? 4 4
? 5 5
? 6 6
? 7 7
? 8 8
? 9 9
? 10 10
? 11 11
? 12 12
? 13 13
? 14 14
? 15 15
? 16 16
? 17 17
? 18 18
? 19 19
? 20 20
? 21 21
? 22 22
? 23 23
? 24 24
? 25 25
? 26 26
? 27 27
? 28 28
? 29 29
? 30 30
? 31 31
? 32 32
? 33 33
? 34 34
? 35 35
? 36 36
? 37 37
? 38 38
? 39 39
? 40 4...

result:

ok ok (10 test cases)

Test #6:

score: 0
Accepted
time: 32ms
memory: 3616kb

input:

5
1952
0
207059033
0
846665449
247683562
650126777
348616690
570194875
727419904
504212241
0
0
491140658
0
876684021
0
8207113
0
0
0
0
0
0
325502144
0
78879155
0
828506541
357830073
0
831431906
864603826
0
0
656125431
582335892
651256373
0
640787570
0
103421615
0
0
0
0
0
481682299
493673601
93577949...

output:

? 1 1
? 2 2
? 3 3
? 4 4
? 5 5
? 6 6
? 7 7
? 8 8
? 9 9
? 10 10
? 11 11
? 12 12
? 13 13
? 14 14
? 15 15
? 16 16
? 17 17
? 18 18
? 19 19
? 20 20
? 21 21
? 22 22
? 23 23
? 24 24
? 25 25
? 26 26
? 27 27
? 28 28
? 29 29
? 30 30
? 31 31
? 32 32
? 33 33
? 34 34
? 35 35
? 36 36
? 37 37
? 38 38
? 39 39
? 40 4...

result:

ok ok (5 test cases)

Test #7:

score: 0
Accepted
time: 15ms
memory: 3904kb

input:

5
2000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0...

output:

? 1 1
? 2 2
? 3 3
? 4 4
? 5 5
? 6 6
? 7 7
? 8 8
? 9 9
? 10 10
? 11 11
? 12 12
? 13 13
? 14 14
? 15 15
? 16 16
? 17 17
? 18 18
? 19 19
? 20 20
? 21 21
? 22 22
? 23 23
? 24 24
? 25 25
? 26 26
? 27 27
? 28 28
? 29 29
? 30 30
? 31 31
? 32 32
? 33 33
? 34 34
? 35 35
? 36 36
? 37 37
? 38 38
? 39 39
? 40 4...

result:

ok ok (5 test cases)

Test #8:

score: 0
Accepted
time: 19ms
memory: 3688kb

input:

1052
9
911133045
0
526984535
0
931320524
0
928006811
0
176872302
928006811
931320524
1331374524
1340686664
1808307998
9
916585987
0
423565782
0
615681673
0
935399347
0
661248049
615681673
1275831339
1517066200
1517066200
2278784416
10
587217915
0
129148010
0
316225345
0
935126806
0
641901481
0
31622...

output:

? 1 1
? 2 2
? 3 3
? 4 4
? 5 5
? 6 6
? 7 7
? 8 8
? 9 9
? 7 9
? 3 5
? 1 3
? 5 7
? 1 7
! 911133045 -106743056 526984535 -863753190 931320524 -518640671 928006811 -176872302 176872302 
? 1 1
? 2 2
? 3 3
? 4 4
? 5 5
? 6 6
? 7 7
? 8 8
? 9 9
? 3 5
? 1 3
? 5 7
? 5 9
? 1 7
! 916585987 -64320430 423565782 -51...

result:

ok ok (1052 test cases)

Test #9:

score: 0
Accepted
time: 27ms
memory: 3692kb

input:

105
98
488529703
0
468492922
0
802901522
0
475641005
0
635144928
0
319324280
0
312095441
0
637285947
0
863514749
0
567178596
0
785897142
0
706104708
0
913552861
0
580235462
0
86293259
0
945400504
0
549373433
0
807677852
0
115856051
0
376484061
0
984127422
0
202884700
0
516705542
0
286842060
0
517315...

output:

? 1 1
? 2 2
? 3 3
? 4 4
? 5 5
? 6 6
? 7 7
? 8 8
? 9 9
? 10 10
? 11 11
? 12 12
? 13 13
? 14 14
? 15 15
? 16 16
? 17 17
? 18 18
? 19 19
? 20 20
? 21 21
? 22 22
? 23 23
? 24 24
? 25 25
? 26 26
? 27 27
? 28 28
? 29 29
? 30 30
? 31 31
? 32 32
? 33 33
? 34 34
? 35 35
? 36 36
? 37 37
? 38 38
? 39 39
? 40 4...

result:

ok ok (105 test cases)

Test #10:

score: 0
Accepted
time: 15ms
memory: 3912kb

input:

10
911
190008868
0
267501671
0
615470163
0
133513401
0
314315377
0
660548519
0
555314918
0
941289689
0
231059371
0
56848945
0
294509086
0
423676574
0
947717893
0
631853488
0
420480249
0
447345907
0
368504182
0
757380250
0
498988264
0
155354017
0
832730679
0
982153581
0
779911649
0
228619121
0
524075...

output:

? 1 1
? 2 2
? 3 3
? 4 4
? 5 5
? 6 6
? 7 7
? 8 8
? 9 9
? 10 10
? 11 11
? 12 12
? 13 13
? 14 14
? 15 15
? 16 16
? 17 17
? 18 18
? 19 19
? 20 20
? 21 21
? 22 22
? 23 23
? 24 24
? 25 25
? 26 26
? 27 27
? 28 28
? 29 29
? 30 30
? 31 31
? 32 32
? 33 33
? 34 34
? 35 35
? 36 36
? 37 37
? 38 38
? 39 39
? 40 4...

result:

ok ok (10 test cases)

Test #11:

score: 0
Accepted
time: 14ms
memory: 3688kb

input:

5
1952
270943944
0
427827622
0
706467567
0
657378898
0
336632977
0
646373280
0
330175227
0
636169757
0
614552419
0
752377204
0
964998361
0
223064174
0
402544250
0
855778411
0
374152994
0
278416329
0
988879952
0
151167996
0
775855140
0
366009963
0
63772275
0
189944036
0
123776551
0
636001304
0
860458...

output:

? 1 1
? 2 2
? 3 3
? 4 4
? 5 5
? 6 6
? 7 7
? 8 8
? 9 9
? 10 10
? 11 11
? 12 12
? 13 13
? 14 14
? 15 15
? 16 16
? 17 17
? 18 18
? 19 19
? 20 20
? 21 21
? 22 22
? 23 23
? 24 24
? 25 25
? 26 26
? 27 27
? 28 28
? 29 29
? 30 30
? 31 31
? 32 32
? 33 33
? 34 34
? 35 35
? 36 36
? 37 37
? 38 38
? 39 39
? 40 4...

result:

ok ok (5 test cases)

Extra Test:

score: 0
Extra Test Passed