rt,此题想尝试用acwing的二分模板去做,但是有3个点WA了。和同学讨论觉得可能是模板的问题,但是我们又没有发现漏洞,真诚求大佬解答!谢谢!
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1000010;
int h[N];
int n,m;
int woods(int x){
int res=0;
for(int i=0;i<n;i++){
if(x<h[i]){
res+=h[i]-x;
}
}
return res;
}
int main(){
scanf("%d%d",&n,&m);
int max_height=0;
for(int i=0;i<n;i++){
scanf("%d",&h[i]);
max_height=max(max_height,h[i]);
}
int left=0;
int right=max_height;
while(left<right){
int mid=(left+right+1)>>1;
if(woods(mid)<m){
right=mid-1;
}else{
left=mid;
}
}
printf("%d",left);
return 0;
}