P1873 [COCI 2011/2012 #5] EKO / 砍树
作者:
hayate
,
2024-02-20 12:43:37
,
所有人可见
,
阅读 54
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 1e6;
int n, m;
int h[N];
int maxx;
bool check(int mid) {
long long res = 0;
for(int i = 0; i < n; i++) {
if(h[i] > mid) {
res += (h[i] - mid);
}
}
return res >= m;
}
int main() {
cin >> n >> m;
for(int i = 0; i < n; i++) {
cin >> h[i];
maxx = max(maxx, h[i]);
}
int l = 0, r = maxx;
while(l < r) {
int mid = l + (r - l) / 2;
if(check(mid)) l = mid + 1;
else r = mid;
}
cout << l - 1 << endl;
return 0;
}