提交时间:2025-10-11 21:44:35
运行 ID: 38498
#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(mid*yq-sm[mid]<=ys){ xans=mid; l=mid+1; } else r=mid-1; } return xans; } 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(__>=i || p[__+1]>=mid){ xans=mid; l=mid+1; } else r=mid-1; } if(i==0)xans=a; ans=max(ans,sum1+xans*cm); } printf("%lld",ans); }