| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38513 | sea_water | 【J】T4 | C++ | 运行出错 | 0 | 0 MS | 268 KB | 1244 | 2025-10-15 18:28:40 |
#include<bits/stdc++.h> using namespace std; int n,nn,nm,e,re; long long maxx,m,mm,c[1005],num,ans,z,l,a,b; struct xxs{ long long x,sum; }v[1005],vv[1005]; bool flag=0; int main(){ freopen("myth.in","r",stdin); freopen("myth.out","w",stdout); cin>>n>>maxx>>a>>b>>m; for(int i=1;i<=n;i++){ cin>>c[i]; } sort(c+1,c+n+1); for(int i=1;i<=n;i++){ if(i==1||c[i]!=c[i-1]){ v[++nm].x=c[i]; v[nm].sum=1; } else{ v[nm].sum++; } } for(int i=1;i<=n;i--){ if(flag) break; for(int j=1;j<=nm;j++){ vv[j]=v[j]; } nn=nm,e=i,mm=m,num=0,z=1,l=1,re=0; while(nn>=1&&vv[nn].sum<=e){ num+=vv[nn].sum*a; mm-=vv[nn].sum*(maxx-vv[nn].x); if(mm<0) break; e-=vv[nn].sum; nn--; } if(e){ num+=e*a; mm-=e*(maxx-vv[nn].x); if(mm<0) break; vv[nn].sum-=e; } if(nn==0){ ans=max(ans,num); break; } if(mm<0) break; while(l<=nn&&z<=maxx){ if(mm-vv[l].sum>=0){ mm-=vv[l].sum; vv[l].x++; num+=b; if(vv[l].x==maxx){ ans=max(ans,num); flag=1; break; } if(vv[l].x==vv[l+1].x){ vv[l+1].sum+=vv[l].sum; l++; } } z++; } ans=max(ans,num); } cout<<ans; return 0; }