Submission #1264326

#TimeUsernameProblemLanguageResultExecution timeMemory
1264326goulthenLabels (NOI20_labels)C++20
7 / 100
12 ms7236 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define rep(i,a,b) for(int i=a;i<=b;++i) #define per(i,a,b) for(int i=a;i>=b;--i) #define pb push_back const int MAXN=3e5 + 10; int a[MAXN], l[MAXN], r[MAXN], b[MAXN]; int32_t main(){ ios::sync_with_stdio(0);cin.tie(0); int n;cin >> n; rep(i,1,n-1) cin >> a[i]; rep(i,1,n) l[i] = 1, r[i] = n; rep(i,1,n-1) { if (a[i] >= 0) { r[i] = min(r[i], n-a[i]); l[i+1] = max(l[i+1], a[i]+1); } else { r[i+1] = min(r[i+1], n+a[i]); l[i] = max(l[i], -a[i]+1); } } bool ok = 0; rep(i, 1, n) { if (l[i] == r[i]) ok = 1, b[i] = l[i]; if (l[i] > r[i]) { ok = 0; break; } } if (!ok) { cout << "-1\n"; return 0; } rep(i,2,n) if (b[i-1]) b[i] = a[i-1] + b[i-1]; per(i,n-1,1) if (b[i+1]) b[i] = b[i+1] - a[i]; rep(i,1,n) { if (b[i] < l[i] || b[i] > r[i]) ok = 0; } if (!ok) { cout << "-1\n"; return 0; } rep(i,1,n) cout << b[i] << " \n"[i==n]; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...