砍伐树木题解
2024-10-26 20:27:45
发布于:北京
9阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int main(){
long long n,m,mx = 0;
cin >> n >> m;
int a[n + 1];
for(int i = 1;i <= n;i ++){
cin >> a[i];
if(a[i] > mx) mx = a[i];
}
int l = 0,r = mx,ans = 0;
while(l <= r){
int mid = (l + r) / 2;
long long sum = 0;
for(int j = 1;j <= n;j ++){
if(a[j] > mid) sum += a[j] - mid;
}
if(sum >= m){
ans = mid;
l = mid + 1;
}else r = mid - 1;
}
cout << ans << endl;
return 0;
}
这里空空如也
有帮助,赞一个