#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
int x[1000011];
signed main(){
cin>>n>>m;
int l=0;
int r=0;
for(int i=0;i<n;i++)
{
cin>>x[i];
r=max(x[i],r);
}
while(l<=r)//二分模板,单调性,答案有有限种可能
{
int mid=(l+r)>>1;//取中
int s=0;
for(int i=0;i<n;i++)
{
if(x[i]>mid)
{
s+=(x[i]-mid);
}
}
if(s<m)//改变左右值
r=mid-1;
else l=mid+1;
}
cout<<l-1<<endl;
}
/*泛舟沧海,立马昆仑*/
/*若你为了错过太阳而哭泣,那么你也将错过群星了*/
/*红了樱桃,绿了芭蕉*/
/*泛舟沧海,立马昆仑*/
/*若你为了错过太阳而哭泣,那么你也将错过群星了*/
/*红了樱桃,绿了芭蕉*/
/*
3 3
0 3
1 2
0 2
*/
P1873--砍树--二分答案
最新推荐文章于 2024-07-15 22:10:26 发布