#include<bits/stdc++.h>
using namespace std ;
const int N=1000005 ;
const long long M=2*1e9+5;
int n ;
long long m ;
int tree[N] ;
int l,r ;
int main()
{
scanf("%d%lld",&n,&m) ;
for (int i=1 ;i<=n ;++i) scanf("%d",&tree[i]) ;
sort(tree+1,tree+1+n) ;
l=tree[1];r=tree[n];
while(r>=l)
{
int mid = (l+r) >> 1 ;
long long ans = 0;
for(int i=n ;i>=1 ;--i)
{
if (tree[i] <= mid) break ;
ans += tree[i]-mid ;
}
if (ans == m)
{
cout << mid ;
break ;
} else if (ans > m)
{
l = mid+1 ;
} else if (ans < m)
{
r = mid-1 ;
}
}
}
求教大佬,我的二分写法具体哪里出错