代码:
#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=6e5+10;
long long n,m,a[M],b[M],mid;
bool check(long long h){
int ans=0;
for(long long i=0;i<n;i++) if(a[i]>=h) ans+=a[i]-h;
if(ans>=m) return true;
else return false;
}
int main(){
cin>>n>>m;
for(long long i=0;i<n;i++) scanf("%ld",&a[i]);
long long l=0,r=2e9+1;
while (l+1<r){
mid=l+(r-l)/2;
if(check (mid)) l=mid;
else r=mid;
}
printf("%ld",mid) ;
return 0;
}
没过样例,但40分,求大佬改正。