提交时间:2025-10-15 19:31:19

运行 ID: 38540

#include<bits/stdc++.h> using namespace std; long long n,A,fm,cm,m,ans; int a[100005]; long long sum[100005]; int erfen(int y,int x){ int l=y,r=n; while(l<r){ int mid=(l+r)/2; if(a[mid]<x) r=mid; else l=mid+1; } return l; } int main(){ //freopen("myth.in","r",stdin); //freopen("myth.out","w",stdout); cin>>n>>A>>fm>>cm>>m; for(int i=1;i<=n;i++){ cin>>a[i]; } sort(a+1,a+n+1,greater<int>()); for(int i=1;i<=n;i++){ sum[i]=sum[i-1]+a[i]; } if(m>=(n*A)-sum[n]){ cout<<(n*fm)+(A*cm); return 0; } for(int i=0;i<n;i++){ long long t=m-((i*A)-sum[i]); if(t<0) break; int l=1,r=A; while(l<r){ int mid=(l+r+1)/2; int ne=erfen(i+1,mid); if(((n-ne+1)*mid)-sum[n]+sum[ne-1]<=t) l=mid; else r=mid-1; } ans=max(ans,(i*fm)+(l*cm)); } cout<<ans; return 0; }