Submission #284869

#TimeUsernameProblemLanguageResultExecution timeMemory
284869Ronin13Labels (NOI20_labels)C++14
100 / 100
324 ms7412 KiB
#include<bits/stdc++.h>
#define ll long long
#define f first
#define s second
#define pii pair<int,int>
#define pll pair<ll,ll>
#define ull unsigned ll
#define pb push_back
#define mp make_pair
 
using namespace std;
int d[300001];
int n;
int a[300001];
int cnt=0;
vector<vector<int> >ans;
void rec(int ind,int val,vector<int>k){
	if(ind==n){
		k.pb(val);
		ans.pb(k);
		cnt++;
		return;
	}
	k.pb(val);
	for(int i=1;i<=n;i++){
		if(i-val==d[ind])rec(ind+1,i,k);
	}
}

int main(){
	cin>>n;
	
	for(int i=1;i<n;i++)cin>>d[i];
	vector<int> pr;
	
	pr.pb(0);
	int cnt=0;
	for(int i=1;i<n;i++){
		cnt+=d[i];
		pr.pb(cnt);
	}
	sort(pr.begin(),pr.end());
	int l=1-pr[0],r=n-pr[pr.size()-1];

	if(l!=r){
		cout<<-1;
		return 0;
	}
	vector<int>k;
	k.pb(l);
	int cur=l;
	for(int i=2;i<=n;i++){
		k.pb(cur+d[i-1]);
		cur+=d[i-1];
	}
	for(int i=0;i<(int)k.size();i++)cout<<k[i]<<' ';
	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...