Submission #337502

#TimeUsernameProblemLanguageResultExecution timeMemory
337502zapan4Labels (NOI20_labels)C++17
25 / 100
223 ms21200 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; for (int i = 1; i < n; i++) { ll a; cin >> a; prefix[i] = prefix[i-1]+a; maxi = max(prefix[i], maxi); } int amount = n-maxi; answers[0] = amount; checking[amount] = 1; if (amount <= 0) { cout << "-1" << endl; return 0; } for (int i = 1; i < n; i++) { if (i == n-1) { if (checking.find(amount+prefix[i]) == checking.end()) { answers[i] = amount+prefix[i]; if (answers[i] <= 0) { cout << "-1" << endl; return 0; } checking[amount+prefix[i]] = 1; } else { cout << "-1" << endl; return 0; } } else { if (checking.find(amount+prefix[i]) == checking.end()) { answers[i] = amount+prefix[i]; if (answers[i] <= 0) { cout << "-1" << endl; return 0; } checking[amount+prefix[i]] = 1; } else { 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...