记录编号 600868 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 4134.[USACO25 Open Gold]OohMoo Milk 最终得分 100
用户昵称 Gravatarwdsjl 是否通过 通过
代码语言 C++ 运行时间 1.048 s
提交时间 2025-05-20 11:20:24 内存使用 4.18 MiB
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;

int s[100001];

bool ff(const long long a,const long long b){
	return a>b;
}

signed main(){
	freopen("Milk.in","r",stdin);
	freopen("Milk.out","w",stdout);
	int a,b,c,d;
	long long f,g;
	cin>>a>>b>>c>>d;
	for(int v=1;v<=a;++v){
		cin>>s[v];
	}
	sort(s+1,s+a+1,ff);
	f=(long long)(c-d)*b;
	s[0]=1145141919810;
	for(int v=c;v;--v){
		if((__int128)(s[v-1]-s[v])*(c-v+1)<=f){
			while(s[c]+b<s[v-1]){
				f=f-s[c]-b+s[v];
				s[c]=s[c]+b;
				--c;
			}
			f=f-(s[v-1]-s[v])*(c-v+1);
		}
		else{
			g=f/(c-v+1);
			if(s[v]+g>=s[c]+b){
				f=f-s[c]-b+s[v];
				s[c]=s[c]+b;
				--c;
				++v;
				continue;
			}
			f=f%(c-v+1);
			for(int var=v+1;var<=c;++var){
				s[var]=s[v]+g;
			}
			s[v]=s[v]+g;
			for(int var=v;f;++var,--f){
				++s[var];
			}
			break;
		}
	}
	f=0;
	for(int v=1;v<=a;++v){
		s[v]=s[v]%1000000007;
		f=(f+s[v]*s[v])%1000000007;
	}
	cout<<f;
	return 0;
}