二分萌新
这是我的ac代码
就是有点不明白最后为啥需要减一
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
long long n,m;
long long a[1000005];
bool check(long long x){
long long ans=0;
for(int i=1;i<=n;i++){
if(a[i]>x)
ans+=a[i]-x;
}
if(ans>=m)
return 0;
else
return 1;
}
int main(){
scanf("%lld%lld",&n,&m);
long long l=1e9,r=0;
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
l=min(a[i],l);
r=max(a[i],r);
}
sort(a+1,a+n+1);
while(l<r){
long long mid=(l+r)/2;
if(check(mid))
r=mid;
else
l=mid+1;
if(l==r){
printf("%lld\n",l-1);
break;
}
}
return 0;
}