Submission #1208417

#TimeUsernameProblemLanguageResultExecution timeMemory
1208417loomLabels (NOI20_labels)C++20
100 / 100
34 ms9288 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define inf 5e18
#define nl '\n'

int n;
int ans[300001];

bool func(pair<int,int> a[], int v){
   auto [x, ix] = *min_element(a, a+n-1);
   ans[ix] = max(x+1, v);
   ans[1] = ans[ix] - x;
   if(ans[1] > n) return 0;

   for(int i=0; i<n-1; i++){
      auto [x, ix] = a[i];
      ans[ix] = x + ans[1];

      if(ans[ix] > n) return 0;
   }

   return 1;
}

inline void solve(){
   cin>>n;
   pair<int,int> a[n-1];
   int pre = 0;
   for(int i=0; i<n-1; i++){
      int x;
      cin>>x;
      pre += x;
      a[i] = {pre, i+2};
   }

   auto [x, ix] = *min_element(a, a+n-1);
   if(x+1 >= 2 ? func(a, x+2) : func(a, 2)){
      cout<<-1;
      return;
   }
   func(a, 1);

   for(int i=1; i<=n; i++) cout<<ans[i]<<" ";
}

signed main(){
   ios_base::sync_with_stdio(0);
   cin.tie(NULL);cout.tie(NULL);

   int t = 1;
   //cin>>t;
   while(t--) solve();

   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...