Codeforces Round #322 B Luxurious Houses

来源:互联网 发布:软件测试 招聘 编辑:程序博客网 时间:2024/06/05 00:31

题意: 给出你N个数,问你这个数想要比后面的数都大至少要加几? 

思路: 有一点点考思路,从后向前找,依次找出最大值,直接比较就可以了,有一点点细节,就是要记录最大数和当前数的下标是否是同一位置,如果是则为0否则,直接算便可、

AC代码:

#include<cstdio>#include<cstring>const int maxn=100100;int a[maxn];int b[maxn];int n;int main(){    while(scanf("%d",&n)!=EOF){        for(int i=0;i<n;i++)            scanf("%d",&a[i]);        int x=0; int y;        for(int i=n-1;i>=0;i--){            if(x<a[i]){                x=a[i];                y=i;            }            if(y==i)                b[i]=x-1;            else b[i]=x;        }        for(int i=0;i<n-1;i++){            if(b[i]>=a[i])                printf("%d ",b[i]-a[i]+1);            else                printf("0 ");        }        printf("0\n");    }    return 0;}


0 0
原创粉丝点击