低能儿的30分代码求助
查看原帖
低能儿的30分代码求助
772749
METEOIRITE楼主2022/12/18 10:36
#include <iostream>
#include <algorithm>

const int maxn = 1000005;
int H[maxn];
int N,M;

auto count_= [](int height)->int{
    int ans_=0;
    for(int i=1;i<=N;i++){
        if(H[i]>height){
            ans_+=H[i]-height;
        }
    }
    return ans_;
};

auto er_fen = [](int left ,int right,int key)->int{
    while(left<right)
    {
        auto mid =(left+right)/2;
        if(count_(mid)>=key){
            right=mid;
        }
        if(count_(mid)<key){
            left=mid+1;
        }
    }
    if(H[left]=key) return left;
    else return -1;
};

int main()
{
    std::cin>>N>>M;
    std::cin>>H[1];
    int max_=H[1],min_=H[1];
    for(int i=2;i<=N;i++){
        std::cin>>H[i];
        if(H[i]>max_){
            max_=H[i];
        }
        if(H[i]<min_){
            min_=H[i];
        }
    }
    std::cout<<er_fen(min_,max_,M)<<std::endl;
    return 0;
}

https://www.luogu.com.cn/record/97547017 哼哼哼 啊啊啊啊啊啊啊

2022/12/18 10:36
加载中...