二分搜索
50分 #RE2,3,5,9,10
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int ans,n,m,all[N];
int main(){
int max,min,mc;min = 0;
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>all[i];
if(all[i] > max) max = all[i];
}
while((max-min)>=3){
mc = 0;ans = (min+max)/2;
for(int i=0;i<n;i++){
if(all[i]>ans)mc+=(all[i]-ans);
}
if(mc<m){
max = ans;ans = (min+max)/2;
}
if(mc>m){
min = ans;ans = (min+max)/2;
}
if(mc==m){
cout<<ans;return 0;
}
}
cout<<ans;
return 0;
}