题目链接:
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 报告,期末真的事情超级多。
跑题了,忙里偷闲水一了一题。