题解(小码王集训营版)
2025-07-26 11:41:52
发布于:浙江
2阅读
0回复
0点赞
#include<iostream>
#define N 1000010
#define int long long
using namespace std;
int n,m,a[N];
bool check(long long x){
int sum=0;
for (int i=0;i<=n;i++){
if (a[i]>x){
sum+=a[i]-x;
}
}
return sum>=m;
}
int upans(int l,int r){
int ans=0;
while(l<=r){
int mid=(l+r)/2;
if (check(mid)){
ans=mid;
l=mid+1;
}else{
r=mid-1;
}
}
return ans;
}
signed main() {
cin>>n>>m;
int maxn=-114514191980;
for (int i=1;i<=n;i++){
cin>>a[i];
maxn=max(maxn,a[i]);
}
cout<<upans(0,maxn);
return 0;
}
这里空空如也
有帮助,赞一个