Submission #1178045

#TimeUsernameProblemLanguageResultExecution timeMemory
1178045vneduLabels (NOI20_labels)C++20
100 / 100
33 ms5960 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

template<class T> bool maximize(T &a, const T &b){ return (a < b ? a = b, 1 : 0); }
template<class T> bool minimize(T &a, const T &b){ return (a > b ? a = b, 1 : 0); }

#define fi first
#define se second

#define pb push_back
#define ii pair<int, int>

#define all(x) x.begin(), x.end()

#define TASK "LABELS"

/// end of template ///

const int N = 3e5 + 35;
int n,d[N];
ll p[N];
void solve()
{
    cin>>n;
    ll mx=LLONG_MIN,mn=LLONG_MAX;
    for (int i=1; i<n; ++i)
    {
        cin>>d[i];
        p[i]=p[i-1]+d[i];
        maximize(mx,p[i]);
        minimize(mn,p[i]);
    }
    int cnt=0;
    for (int i=1; i<=n; ++i)
    {
        if (mx+i>=1 && mx+i<=n && mn+i>=1 && mn+i<=n) ++cnt;
    }
    if (cnt!=1) return void(cout<<-1);
    for (int i=1; i<=n; ++i) if (mx+i>=1 && mx+i<=n && mn+i>=1 && mn+i<=n)
    {
        cout<<i<<' ';
        ll cur=i;
        for (int j=1; j<n; ++j)
        {
            cur+=d[j];
            cout<<cur<<' ';
        }
        return;
    }
}

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

//    freopen(TASK".inp","r",stdin);
//    freopen(TASK".out","w",stdout);

    int testcase=1;
//    cin>>testcase;

    while (testcase--)
        solve();

//    #define TIME  (1.0 * clock() / CLOCKS_PER_SEC)
//    cerr << "Time elapsed: " << TIME << " s.\n";
    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...