CodeForces - 581B - Luxurious Houses 逆序处理&水

题目链接:
http://codeforces.com/problemset/problem/581/B
B - Luxurious Houses CodeForces - 581B

题目大意:
给一个数列 , 如果这个数比右边最大的数还要大, 那么是符合题意的。 现在要每个数加上一个数 ,使这个更新后的数列是符合题意的 。求每个这个数 。

1e5数据 逆序处理

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define mem(s,t) memset(s,t,sizeof(s))
#define D(v) cout<<#v<<" "<<v<<endl
#define inf 0x3f3f3f3f
const int MAXN =1e5+10;
int a[MAXN],ans[MAXN];
int main() {
#ifdef LOCAL
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
#endif
    int n;
    while(~scanf("%d",&n)) {
        mem(a,0);
        mem(ans,0);
        for(int i=0; i<n; i++) {
            scanf("%d",a+i);
        }
        int maxn=0;
        for(int i=n-1; i>=0; i--) {
            if(i==n-1) {
                ans[i]=0;
                maxn=max(maxn,a[i]);
                continue;
            }
            if(maxn==a[i]) {
                ans[i]=1;
            } else if(a[i]>maxn) {
                ans[i]=0;
                maxn=a[i];
            } else {
                ans[i]=maxn-a[i]+1;
            }
        }
        for(int i=0; i<n; i++) {
            if(i)
                printf(" %d",ans[i]);
            else printf("%d",ans[i]);
        }
        puts("");
    }
}

ps.五月份竟然要过去了,回想起来也没做什么事情,前半个月忙于省赛,后面半个月,想起来只有两件事,自己的生日和整个小组连着通宵 3 天赶创新实践结题。生日那天,原本计划了很多,但是最近越来越没心情,干脆就叫了几个朋友撸串。最近心态改变了很多吧,内心颇不平静。至于项目,暑假还要接着干,这个课程在后天 6.2 报告,期末真的事情超级多。
跑题了,忙里偷闲水一了一题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值