CodeForces 534C Polycarpus' Dice

来源:互联网 发布:陈冠希艳照门事件知乎 编辑:程序博客网 时间:2024/06/06 20:25

题目链接:http://codeforces.com/problemset/problem/534/C

题目大意:给出n个数,和n个数的和A;

要求用你给出数字小的数加起来使得和等于A,输出每个数有几个数一定不能取;

思路:求出数字可已取到的最小值和最大值,之间的可以取,剩下的取不到;

代码如下:

#include<bits/stdc++.h>using namespace std;int main(){    long long int n,a;    long long int b[200005];    scanf("%lld%lld",&n,&a);    long long int sum=0;    for(long long int i=0;i<n;i++)    {        scanf("%lld",&b[i]);        sum+=b[i];    }    for(long long int i=0;i<n;i++)    {        if(i!=0)            printf(" ");        long long int maxx=a-n+1;//除了本数,其他所有数取1的时候求出最大值;        long long int minn=a-sum+b[i];//其他数都取最大的时候求出可以取到的最小值;        long long int cnt=0;        if(minn>0)cnt+=minn-1;        if(maxx<=b[i])cnt+=b[i]-maxx;        printf("%I64d",cnt);    }}


0 0
原创粉丝点击