20分,后面四个超时
查看原帖
20分,后面四个超时
1004178
FanofFuSu楼主2023/8/30 15:37

不多说了,while那里有问题,但是本人蒟蒻不会改,耷姥帮帮

#include<bits/stdc++.h>
using namespace std;
int n,a[101],_a,ans;
int findmax(){
	int num,maxn=-1;
	for(int i=1;i<=n;i++)
		if(a[i]>maxn){
			num=i;
			maxn=a[i];
		}
	return num;
}
bool equal(){
	for(int i=1;i<=n;i++)
		if(a[i]!=_a)	return 0;
	return 1;
}
void search(){
	int que;
	for(int i=1;i<=findmax();i++){
		que+=_a-a[i];
		a[i]=_a;
	}
	a[findmax()]-=que;
	ans+=(findmax()-1);
	que=0;
	for(int i=n;i>=findmax();i--){
		que+=_a-a[i];
		a[i]=_a;
	}
	a[findmax()]-=que;
	ans+=(n-findmax());
	que=0;
} 
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		_a+=a[i];
	}
	_a/=n;//平均值
	while(!equal())
		search();
	printf("%d",ans);
	return 0;
}
2023/8/30 15:37
加载中...