Untitled
unknown
plain_text
10 months ago
915 B
6
Indexable
#include <iostream>
using namespace std;
long long sumD[300001] = {0};
int main()
{
int N;
cin >> N;
// Init value to 0 !!!
long long maxD = 0, minD = 0;
for (int i = 1; i < N; ++i) {
cin >> sumD[i];
// Precalculate sumD
sumD[i] += sumD[i-1];
// Find max and min
maxD = max(maxD, sumD[i]);
minD = min(minD, sumD[i]);
}
// Criteria to be in range for unique answer
if (maxD - minD == N - 1) {
int A1 = 1 - minD;
// Check if A1 is also valid
if (A1 < 1 || A1 > N) {
cout << -1;
return 0;
}
// Reconstruct array
cout << A1 << " ";
for (int i = 1; i < N; ++i) {
cout << A1 + sumD[i] << " ";
}
} else {
cout << -1;
}
return 0;
}Editor is loading...
Leave a Comment