| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38540 | 黄子睿 | 【J】T4 | C++ | 通过 | 100 | 34 MS | 1424 KB | 841 | 2025-10-15 19:31:19 |
#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; }