P1873 伐木
#include <iostream>
using namespace std;
long long a[10000],n,m,ans=0,maxx=0;
int half(int l,int r)
{
int m;
while (l<=r)
{
ans=0;
m=(l+r)/2;
for(int i=1;i<=n;i++)
{
if(a[i]>m)
{
ans+=a[i]-m;
}
}
if(ans<m)
{
r=m-1;
}
if(ans>=m)
{
l=m+1;
}
}
return r;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
maxx=max(maxx,a[i]);
}
cout<<half(0,maxx);
return 0;
}