Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
38525 sea_water 【J】T4 C++ 解答错误 60 39 MS 1812 KB 854 2025-10-15 18:57:42

Tests(6/10):


#include<bits/stdc++.h> using namespace std; int n,a,b; long long maxx,m,mm,c[100005],z[100005],l,r,mid,sum,ans,num,f,e; bool flag=0; 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(){ 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=c[n]; 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+=e*b+e*a; else sum+=e*b; ans=max(ans,sum); if(e==maxx) break; } cout<<ans; return 0; }


测评信息: