根本看不出错在哪了(悲)
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+1;
int a[N];
int v(int x,int n,int a[],int m){
int sum=0;
for(int i=1;i<=n;i++){
if(a[i]>x) sum+=a[i]-x;
}
if(sum==m) return 2;
else if(sum>m) return 1;
else return 0;
}
int main(){
int m,ans,n;
cin>>n>>m;
int l=0,r=0,mid;
for(int i=1;i<=n;i++){
cin>>a[i];
r=max(a[i],r);
}
ans=-1;
while(l<=r){
mid=(l+r)/2;
int flag=v(mid,n,a,m);
if(flag){
if(flag==1){
l=mid+1;
ans=max(mid,ans);
}else{
ans=mid;
cout<<ans;
return 0;
}
}else{
r=mid-1;
}
}
cout<<ans;
return 0;
}