#include<bits/stdc++.h>
using namespace std;
long long n,m;
long long arr[1000000+1];
long long Max = -1,sum,num;
long long Min = INT_MAX;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
scanf("%d",&arr[i]);
Max = max(arr[i],Max);
Min = min(arr[i],Min);
sum+=arr[i];
}
long long l = 0,r = Max;
while(l<r){
long long mid = l+r>>1;
num = 0;
for(int i=1;i<=n;i++){
if(arr[i]>mid){
num+=arr[i]-mid;
}
}
if(num==m){
cout<<mid<<endl;
return 0;
}
if(num>m){
l = mid;
}else{
r = mid-1;
}
}
cout<<l<<endl;
return 0;
}
就是如果吧mid = l+r>>1换成mid = l+r>>1+1就是0分了,思路也对了啊,为什么就是二十分,TLE