Untitled

 avatar
unknown
plain_text
2 months ago
915 B
3
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