#include<bits/stdc++.h>
using namespace std;
int n,m;//树木的数量,长度
int a[100010];//每棵树的高度
bool check(int h)//h要修剪的长度
{
int res=0;
for(int i=0;i<n;i++)
{
if(a[i]>h)//这一不的作用是筛选比要修剪的长度高的树 开始丢了这一步
res+=a[i]-h;//累计修剪的长度
if(res>=m)//是否大于规定值
return true;
}
return false;
}
int main()
{
int ans;
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int l=0,r=1e9;
while(l<=r)
{
int mid=(l+r)>>1;
if(check(mid))
{
ans=mid;//将mid的结果赋值给mid
l=mid+1;
}
else
r=mid-1;
}
cout<<ans<<endl;
return 0;
}
01-03
1012
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
01-31
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交