<每日一题> Day2:CodeForces-1141C.PolycarpRestoresPermutation(思维题)
参考代码:
#include <iostream> #include <cstring> using namespace std; const int maxn = 400000 + 5, INF = 0x3f3f3f3f; int value[maxn], ans[maxn]; bool vis[maxn], flag; int main() { int n; cin >> n; flag = true; memset(vis, false, sizeof vis); for(int i = 0; i < n - 1; i ++) cin >> value[i]; ans[0] = 1; int Min = INF; for(int i = 0; i < n - 1; i ++) { ans[i + 1] = ans[i] + value[i]; } for(int i = 0; i < n; i ++) Min = min(Min, ans[i]); for(int i = 0; i < n; i ++) { ans[i] += 1- Min; if(ans[i] > 0 && ans[i] < maxn) vis[ans[i]] = true; } for(int i = 1; i <= n; i ++) if(!vis[i]) flag = false; if(!flag) cout << -1; else { for(int i = 0; i < n; i ++) cout << ans[i] << ' '; } cout << endl; return 0; }
时间并不会因为你的迷茫和迟疑而停留,就在你看这篇文章的同时,不知道有多少人在冥思苦想,在为算法废寝忘食,不知道有多少人在狂热地拍着代码,不知道又有多少提交一遍又一遍地刷新着OJ的status页面……
没有谁生来就是神牛,而千里之行,始于足下!