求佬,二分acwing模板,70分,3,9,10wa
查看原帖
求佬,二分acwing模板,70分,3,9,10wa
788115
chocococoooo楼主2024/8/11 16:53

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;
}
2024/8/11 16:53
加载中...