| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38499 | hi_hi | 【J】T4 | C++ | 通过 | 100 | 63 MS | 1820 KB | 1284 | 2025-10-11 23:04:26 |
#include<bits/stdc++.h> using namespace std; long long n,a,cf,cm,m; long long p[100005],ans,sm[100005]; inline long long ck(long long yq,long long mx,long long ys){ long long l=0,r=mx,xans=0; while(l<=r){ long long mid=(l+r)/2; if(p[mid]<yq){ xans=mid; l=mid+1; } else r=mid-1; } return xans*yq-sm[xans]<=ys; } int main(){ //freopen("myth.in","r",stdin); //freopen("myth.out","w",stdin); scanf("%lld%lld%lld%lld%lld",&n,&a,&cf,&cm,&m); for(int i=1;i<=n;i++){ scanf("%lld",&p[i]); } sort(p+1,p+n+1); for(int i=1;i<=n;i++){ sm[i]=sm[i-1]+p[i]; } long long ji=0,sum1=0; for(int i=n;i>=0;i--){ if(i!=n){ ji+=(a-p[i+1]); sum1+=cf; } if(ji>m){ printf("%lld",ans); return 0; } long long l=0,r=a,xans=0; while(l<=r){ long long mid=(l+r)/2; long long __=ck(mid,i,m-ji); if(__==1){ xans=mid; l=mid+1; } else r=mid-1; } if(i==0)xans=a; ans=max(ans,sum1+xans*cm); } printf("%lld",ans); }