| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38547 | sea_water | 【J】T4 | C++ | 解答错误 | 60 | 42 MS | 1816 KB | 924 | 2025-10-15 19:42:32 |
#include<bits/stdc++.h> using namespace std; int n; long long maxx,m,mm,c[100005],z[100005],l,r,mid,sum,ans,num,f=1,e,a,b; bool cmp(long long x,long long y){ return x>y; } bool check(int x,int id){ num=0; for(int i=id;i<=n;i++){ if(c[i]<=x) num+=x-c[i]; } return (num<=mm); } 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,cmp); for(int i=1;i<=n;i++){ if(c[i]==maxx) f=i; z[i]=z[i-1]+(maxx-c[i]); } for(int i=f;i<=n;i++){ mm=m; e=0; if(z[i]>mm){ continue; } mm-=z[i]; sum=i*a; l=c[n],r=maxx; while(l<=r){ mid=(l+r)/2; if(check(mid,i+1)){ e=max(e,mid); l=mid+1; } else r=mid-1; } if(e==maxx) sum=maxx*1ll*b+n*1ll*a; else sum+=e*1ll*b; ans=max(ans,sum); if(e==maxx) break; } cout<<ans; return 0; }