砍树,40pts
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[1000010];
bool check(int x){
int ans=0;
for(int i=1;i<=n;i++){
if(a[i]>x)ans+=a[i]-x;
}
return ans>=m;
}
int main() {
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
int l=1,r=1000000000,mid;
while(l<=r){
mid=(l+r)>>1;
if(check(mid))l=mid+1;
else r=mid-1;
}
cout<<r;
}