bzoj1816: [Cqoi2010]扑克牌

来源:互联网 发布:知乎live 编辑:程序博客网 时间:2024/05/22 01:37

传送门
二分答案。判断是否可行就可以了。
至于判断,自己yy。

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<cmath>#define N 1000005using namespace std;int a[55],n,l,r,m,mi;bool jud(int x){    int t=min(m,x);    for (int i=1;i<=n;i++){        t-=max(x-a[i],0);        if (t<0) return 0;    }    return 1;}int main(){    scanf("%d%d",&n,&m);    for (int i=1;i<=n;i++) scanf("%d",&a[i]);    l=1;    r=1000000000;    while (l<r){        mi=(l+r+1)/2;        if (jud(mi)) l=mi; else r=mi-1;    }    printf("%d",l);}
原创粉丝点击