请问一下各位大佬,这个代码哪里有问题?
查看原帖
请问一下各位大佬,这个代码哪里有问题?
761210
dpdfs12345楼主2023/2/1 13:33
#include <iostream>
#include <algorithm>
#include <cstring>
#define int long long
using namespace std;
typedef long long LL;
const int N = 1e5 + 10;
int n,m;
LL a[N],ans;
signed main(){
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
	sort(a+1,a+n+1);
	for(int i=n-1;i>=2;i--){
		if(m >= a[n] - a[i]){
			m -= a[n] - a[i];
			a[i] = a[n];
		}
		else{
			a[i] += (LL)m;
			break;
		}
	}
	for(int i=2;i<n;i++){
		if(a[i] == a[n] && m){
			int x = m / (n - i + 1);
			int y = m % (n - i + 1);
			for(int j=i;j<=n;j++){
				a[j] += (LL)x;
				if(j <= i + y - 1){
					a[j] ++ ;
				}
			}
			break;
		}
	}
	sort(a+1,a+n+1);
	for(int i=2;i<n;i++){
		ans += a[i];
	}
	printf("%lld",ans);
	return 0;
}
2023/2/1 13:33
加载中...