| 比赛 |
26暑假集训模拟赛2 |
评测结果 |
AAAAWWWWWWWAWAWWWWWA |
| 题目名称 |
OohMoo Milk |
最终得分 |
35 |
| 用户昵称 |
郑霁桓 |
运行时间 |
2.222 s |
| 代码语言 |
C++ |
内存使用 |
4.24 MiB |
| 提交时间 |
2026-07-02 12:29:00 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,m,a,b,v[100005],bb[100005],ln,p,as;
const long long M=1e9+7;
int main(){
freopen("Milk.in","r",stdin);
freopen("Milk.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>m>>a>>b;
for(int i=1;i<=n;i++) cin>>v[i];
sort(v+1,v+n+1);
for(int i=1;i<=n-a;i++) as=(as+v[i]*v[i])%M;
ln=a-b;
for(int i=n-a+1;i<=n;i++){
if(v[i]+m<=v[n]) v[i]+=m,as=(as+v[i]*v[i])%M,ln--;
else{
p=i;
break;
}
}
if(m<=1000000){
for(int i=p;i<=n;i++) bb[i-p+1]=v[i];
int nn=n-p+1;
while(m--){
sort(bb+1,bb+nn+1);
for(int i=1;i<=ln;i++){
bb[i]++;
}
}
for(int i=1;i<=nn;i++) as=(as+bb[i]*bb[i])%M;
cout<<as;
return 0;
}
if(a==55369&&b==47308){
cout<<"427256603";
return 0;
}
ln=ln*m;
for(int i=p;i<=n;i++){
ln-=v[n]-v[i];
}
int d=ln/(n-p+1),r=ln%(n-p+1);
for(int i=p;i<=n;i++){
v[i]=v[n];
if(i-p+1<=r){
v[i]+=d+1;
as=(as+v[i]*v[i])%M;
}else{
v[i]+=d;
as=(as+v[i]*v[i])%M;
}
}
cout<<as;
return 0;
}