代码如下(90pts求调):
#include <bits/stdc++.h>
using namespace std;
int a[1000001];
int n,m;
int ma=-1;
int ab=0;
int f(int L,int R){
ab++;
int l=L;
int r=R;
int mid=(l+r)/2;
long long ans=0;
for(int i=1;i<=n;i++){
if(a[i]-mid>0){
ans+=a[i]-mid;
}
}
if(l>r){
return mid;
}
if(ans>m){
return f(mid+1,r);
}
if(ans<m){
return f(l,mid-1);
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
ma=max(ma,a[i]);
}
cout<<f(1,ma);
return 0;
}