#include <iostream>
#include <string>
#include <algorithm>
#include <cstdio>
#include <cmath>
using namespace std;
typedef long long ll;
ll n, m;
ll t[1000010];
void bi(ll l, ll r){
ll mid = (l+r)/2, sum = 0;
if (mid == l){
cout << mid;
exit(0);
}
for (ll i = 0; i < n; i++) if (t[i] > mid) sum += t[i]-mid;
if (sum == m){
cout << mid;
exit(0);
}
else if (sum < m) bi(l, mid);
else bi(mid, r);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
cin >> n >> m >> t[0];
ll minn = t[0], maxx = t[0];
for (ll i = 1; i < n; i++){
cin >> t[i];
minn = min(minn, t[i]);
maxx = max(maxx, t[i]);
}
bi(minn, maxx);
return 0;
}
【洛谷】P1873 砍树
最新推荐文章于 2024-01-05 13:08:31 发布