QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#858462#9920. Money Game 2Itgsurf#WA 525ms5760kbC++142.0kb2025-01-16 17:29:312025-01-16 17:29:33

Judging History

This is the latest submission verdict.

  • [2025-01-16 17:29:33]
  • Judged
  • Verdict: WA
  • Time: 525ms
  • Memory: 5760kb
  • [2025-01-16 17:29:31]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;

typedef long long LL;
typedef pair<int,int> PII;

const int mod=998244353;
const int N=5e5+5;

int T,n;
int a[N];

LL calc(int i,int j,int step){
	LL ans=0;
	for(int k=j;k!=i;k=(k+step+n)%n)
		ans=(a[k]+ans)>>1;
	return ans;
}
//1 5 2 1 3 1 2

int main(){
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		for(int i=0;i<n;++i)
			scanf("%d",&a[i]);
		if(n==1){
			printf("%d\n",a[0]);
		}else if(n<=80){
			for(int i=0;i<n;++i){
				LL ans=a[i],tmp=a[i]>>1;
				int j=(i+(n>>1))%n;
				for(int k=j,cnt=0;cnt<=2;++cnt,k=(k-1+n)%n){
					ans=max(ans,a[i]+calc(i,k,-1)+calc(i,(k+1)%n,1));
					if(k==i) break;
				}
				for(int k=j,cnt=0;cnt<=2;++cnt,k=(k+1)%n){
					ans=max(ans,a[i]+calc(i,k,-1)+calc(i,(k+1)%n,1));
					if((k+1+n)%n==i) break;
				} 
				a[i]-=tmp;
				a[(i+1)%n]+=tmp;
				for(int k=j,cnt=0;cnt<=2;++cnt,k=(k-1+n)%n){
					ans=max(ans,a[i]+calc(i,k,-1)+calc(i,(k+1)%n,1));
					if(k==i) break;
				}
				for(int k=j,cnt=0;cnt<=2;++cnt,k=(k+1)%n){
					ans=max(ans,a[i]+calc(i,k,-1)+calc(i,(k+1)%n,1));
					if((k+1+n)%n==i) break;
				} 
				a[(i+1)%n]-=tmp;
				a[(i+n-1)%n]+=tmp;
				for(int k=j,cnt=0;cnt<=2;++cnt,k=(k-1+n)%n){
					ans=max(ans,a[i]+calc(i,k,-1)+calc(i,(k+1)%n,1));
					if(k==i) break;
				}
				for(int k=j,cnt=0;cnt<=2;++cnt,k=(k+1)%n){
					ans=max(ans,a[i]+calc(i,k,-1)+calc(i,(k+1)%n,1));
					if((k+1+n)%n==i) break;
				} 
				a[(i+n-1)%n]-=tmp;
				a[i]+=tmp;
				printf("%lld ",ans);
			}
			puts("");
		}else{
			for(int i=0;i<n;++i){
				LL ans=a[i],tmp=a[i]>>1;
				ans=max(ans,a[i]+calc(i,(i-37+n)%n,1)+calc(i,(i+37)%n,-1));
				a[i]-=tmp;
				a[(i+1)%n]+=tmp;
				ans=max(ans,a[i]+calc(i,(i-37+n)%n,1)+calc(i,(i+37)%n,-1));
				a[(i+1)%n]-=tmp;
				a[(i+n-1)%n]+=tmp;
				ans=max(ans,a[i]+calc(i,(i-37+n)%n,1)+calc(i,(i+37)%n,-1));
				a[(i+n-1)%n]-=tmp;
				a[i]+=tmp;
				printf("%lld ",ans); 
			}
			puts("");
		}
	}
	return 0;
}

详细

Test #1:

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

input:

3
5
2 1 4 3 5
5
2 1 3 1 2
1
1000000000

output:

6 5 7 8 8 
4 4 5 4 4 
1000000000

result:

ok 11 numbers

Test #2:

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

input:

1
10
8 15 18 15 13 4 14 4 17 5

output:

30 37 41 39 34 27 29 26 31 27 

result:

ok 10 numbers

Test #3:

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

input:

1000
4
8 9 7 9
1
9
1
10
2
3 9
3
4 3 2
4
0 4 3 1
4
10 8 4 6
1
9
1
4
4
10 10 1 6
1
9
1
0
2
4 6
4
8 1 6 7
2
5 10
4
9 2 1 4
3
5 5 9
3
9 8 9
4
4 8 5 6
2
10 1
1
7
3
9 2 4
4
2 4 1 2
3
5 2 1
1
4
3
2 0 9
4
7 3 10 1
3
4 1 2
2
6 4
1
2
3
3 1 5
3
5 8 4
2
9 3
4
5 9 10 3
4
6 5 4 0
1
6
4
3 1 10 1
4
1 9 5 7
4
8 1 6 ...

output:

18 18 17 18 
9
10
7 10 
6 6 5 
3 5 5 3 
18 16 13 15 
9
4
18 17 11 14 
9
0
7 8 
13 9 11 14 
10 12 
12 7 6 9 
11 11 13 
17 16 17 
12 14 13 12 
10 6 
7
12 8 9 
5 6 4 4 
6 4 4 
4
6 5 10 
11 11 13 10 
5 4 4 
8 7 
2
5 4 6 
11 12 10 
10 7 
13 17 16 12 
9 10 8 6 
6
6 7 11 7 
9 13 12 11 
14 10 12 16 
18 15 1...

result:

ok 2420 numbers

Test #4:

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

input:

1000
2
45733740 736448710
1
384264719
4
658671808 379716865 553196572 534986092
1
668964623
4
711670857 237459905 849354895 187613938
2
394629064 371184128
2
616819808 937720703
1
43217931
3
934395080 888433507 810476236
1
587663687
2
542163302 508453558
4
313836277 584869499 445629251 225398284
4
2...

output:

413958095 759315580 
384264719
1254322429 1119397578 1175216002 1235849498 
668964623
1136546502 1064876265 1239809530 1027491789 
580221128 568498660 
1085680159 1246130607 
43217931
1783849951 1760869165 1721890529 
587663687
796390081 779535209 
830377481 1020951833 929222211 751348422 
704770986...

result:

ok 2440 numbers

Test #5:

score: -100
Wrong Answer
time: 525ms
memory: 5760kb

input:

1
500000
2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

output:

3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

wrong answer 1st numbers differ - expected: '4', found: '3'