【NBUTOJ】Red packet

来源:互联网 发布:dos复制文件到linux 编辑:程序博客网 时间:2024/05/18 17:23

这里写图片描述
这里写图片描述

经过前面的一番折腾,这种题已经不是问题。
只是考虑全面就行了。
题意:发红包准备发m块钱,n个人,已经发了k个人。
求要成为运气王,至少需要在剩余的钱中得到多少钱,每人得到的钱数都大于0.

#include<stdio.h>#include<math.h>#include<algorithm>using namespace std;const int MAXN = 1*1e5+10;int a[MAXN];int n,m,k,sum;bool judge(int mid) {    if(mid>*max_element(a,a+k)&&mid>m-sum-mid-(n-k-2))        return true;    return false;}int main() {    int T;    scanf("%d",&T);    while(T--) {        sum=0;        scanf("%d%d%d",&n,&m,&k);        for(int l=0; l<k; l++) {            scanf("%d",&a[l]);            sum+=a[l];        }        int l=1,r=m-sum-(n-k-1);        int mid;        int ans=0;        while(l<=r) {            mid=l+r>>1;            if(judge(mid)) {                r=mid-1;                ans=mid;            } else                l=mid+1;        }        if(ans==0)            printf("Impossible\n");        else            printf("%d\n",ans);    }    return 0;}

http://acm.hust.edu.cn/vjudge/contest/123973#problem/I

0 0
原创粉丝点击