为什么错了
查看原帖
为什么错了
655579
Peizekai楼主2024/10/16 18:51

不到是思路问题还是代码问题

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
typedef long long ll;
ll t,n,a[N],s;
int main(){
	cin>>t;
	while(t--){
		cin>>n;
		s=0;
		bool f=0;
		for(ll i=1;i<=n;i++)
			cin>>a[i],s+=a[i];
		ll k=n-(s-s/n*n),d=0;
		for(ll i=1;i<=n;i++){
			if(a[i]-s/n-(i>=k)>d){
				puts("No");
				f=1;
				break;
			}
			if(i<=k){
				if(a[i]<=s/n) d+=s/n-a[i];
				else d-=a[i]-s/n;
			}
			else{
				if(a[i]<=s/n+1) d+=s/n+1-a[i];
				else d-=a[i]-s/n-1;
			}
		}
		if(!f) puts("Yes");
	}
	return 0;
}
2024/10/16 18:51
加载中...