Submission #337508

#TimeUsernameProblemLanguageResultExecution timeMemory
337508zapan4Labels (NOI20_labels)C++17
100 / 100
148 ms9196 KiB
#include <iostream>
#include <cmath> 
#include <stdio.h>
#include <array>
#include <vector>
#include <list>
#include <algorithm>
#include <utility>
#include <string>
#include <sstream>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <unordered_set>
#include <unordered_map>
#include <iomanip>
#define pp pair<int,int>
#define pll pair<ll, ll>
#define ll long long
using namespace std;

map<int, int> checking;
ll prefix[300001];
ll answers[300001];

int main() {
	//freopen(".in", "r", stdin);
	//freopen(".out", "w", stdout);
	ll n;
	cin >> n;
	ll maxi = 0;
	ll mini = 0;
	for (int i = 1; i < n; i++) {
		ll a;
		cin >> a;
		prefix[i] = prefix[i-1]+a;
		maxi = max(prefix[i], maxi);
		mini = min(mini, prefix[i]);
	}
	ll amount = n-maxi;
	//cout << amount << endl;
	//cout << mini << endl;
	if (amount-(1-mini)+1 > 1) {
		cout << "-1" << endl;
		return 0;
	}
	answers[0] = amount;
	checking[amount] = 1;
	for (int i = 1; i < n; i++) {
		answers[i] = amount+prefix[i];
		//cout << answers[i] << " ";
	}
	//cout << endl;
	ll flag = 0;
	for (int i = 0; i < n; i++) {
		if ((answers[i] <= 0) && (answers[i] >= n+1)) {
			flag = 1;
			break;
		}
	}
	if (flag == 1) {
		cout << "-1" << endl;
		return 0;
	}
	for (int i = 0; i < n; i++) {
		if (i == n-1) {
			cout << answers[i] << endl;
		} else {
	 		cout << answers[i] << " ";
	 	}
 	}

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