Submission #1298040

#TimeUsernameProblemLanguageResultExecution timeMemory
1298040m_a_dLabels (NOI20_labels)C++20
0 / 100
47 ms6888 KiB
#include<bits/stdc++.h>

using namespace std;

#define int long long

int32_t main() {
    int n;
    cin >> n;
    int arr[n-1], ans[n]={};
    for(int i=0; i<n-1; ++i) cin >> arr[i];
    int curr=0;
    int max_loc=-1;
    int min_loc=-1;
    int maxi=0, mini=0;
    for(int i=0; i<n-1; ++i) {
        curr+=arr[i];
        if(curr>=n || curr<=-n) break;
        if(curr>=maxi) {
            maxi=curr;
            max_loc=i+1;
        }
        if(curr<=mini) {
            mini=curr;
            min_loc=i+1;
        }
    }
    ans[max_loc]=n-1;
    if(maxi+abs(mini)!=n-1 && -maxi+mini!=-(n-1)) {
        cout << -1;
        return 0; 
    }
    for(int i=max_loc-1; i>=0; --i) {
        ans[i]=ans[i+1]-arr[i];
    }
    for(int i=max_loc+1; i<n; ++i) {
        ans[i]=ans[i-1]+arr[i-1];
    }
    if(max_loc==-1) cout << -1;
    else for(auto &elem:ans) cout << elem+1 << " ";
    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...