比赛 26暑假集训模拟赛2 评测结果 AATAAATTTTTTTTTTTTTT
题目名称 OohMoo Milk 最终得分 25
用户昵称 Lixj 运行时间 17.054 s
代码语言 C++ 内存使用 7.77 MiB
提交时间 2026-07-02 12:28:18
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int MOD=1e9+7;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    freopen("Milk.in","r",stdin);
    freopen("Milk.out","w",stdout);
	int N,D,A,B;
    cin>>N>>D>>A>>B;
    multiset<long long>ms;  // 维护当前所有瓶子的奶量
    for(int i=0;i<N;i++){
        long long m;
        cin>>m;
        ms.insert(m);
    }
    //for(int i=1;i<=n;i++)
    //	cin>>a[i];
    //sort(a+1,a+n+1)
    //for(int i=0;i<A;i++){
    
	while(D--){
        //增加牛奶后放回
        vector<long long> add;
        auto it=ms.end();
        for(int i=0;i<A;i++){
            it--;
            add.push_back(*it+1);
        }
        for(long long v:add)
        	ms.erase(ms.find(v-1)); 
        for(long long v:add) 
			ms.insert(v);
		//偷取牛奶
		if(B>0){
		
        	vector<long long>sub;
        	it=ms.end();
        	for(int i=0;i<B;i++){
           	 	it--;
           	 	sub.push_back(*it-1);
       	 	}
        	for(long long v:sub){
        		ms.erase(ms.find(v+1));
        		
			}
        	for(long long v:sub) 
				ms.insert(v);
		}
    }

    // 计算平方和并取模
    long long ans=0;
    for(long long v:ms) 
        ans=(ans+(v%MOD)*(v%MOD))%MOD;
        //ans=v%MOD*V*MOD+ans%MOD
    cout<<ans;
    return 0;
}