제출 #1181732

#제출 시각아이디문제언어결과실행 시간메모리
1181732random_nameLabels (NOI20_labels)C++20
0 / 100
44 ms4680 KiB
#include <bits/stdc++.h>
using namespace std;

#define long long long
#pragma region overloadings
template <typename T1, typename T2>
ostream& operator<< (ostream& os, const pair<T1, T2>& pair){
    os << '(' << pair.first << ", " << pair.second << ')';
    return os;
}

template <typename T1, typename T2>
ostream& operator<< (ostream& os, const map<T1, T2>& map_var){
    for(pair<T1, T2> i: map_var){
        os << '(' << i.first << ": " << i.second << ") ";
    }

    return os;
}

template <typename T>
ostream& operator<< (ostream& os, const vector<T>& vec){
    for(T i: vec)
        os << i << ' ';
    return os;
}

template <typename T1, typename T2>
istream& operator>> (istream& is, pair<T1, T2>& pair){
    is >> pair.first >> pair.second;
    return is;
}

template <typename T>
istream& operator>> (istream& is, vector<T>& vec){
    for(int i = 0; i < vec.size(); i++)
        is >> vec[i];

    return is;
}
#pragma endregion

bool test_cases = false;
ifstream ifile;
ofstream ofile;

// #define cin ifile
// #define cout ofile

void solution(){
    int n;
    cin >> n;

    vector<int> D(n-1);
    cin >> D;

    int max_sum = 0;
    int max_ind = 0;

    int c_sum = 0;
    int c_ind = 0;

    for(int i = 0; i < n-1; i++){
        c_sum += D[i];

        if(c_sum < 0){
            c_sum = 0;
            c_ind = i;
        }

        if(max_sum < c_sum){
            max_sum = c_sum;
            max_ind = c_ind;
        }
    }

    if(max_sum < n - 1){
        cout << -1 << '\n';
        return;
    }

    int pref_sum[n] = {0};

    for(int i = 1; i < n; i++){
        pref_sum[i] = pref_sum[i-1] + D[i-1];
    }

    int min_num = INT_MAX;

    for(int i = 0; i < n; i++){
        min_num = min(pref_sum[i], min_num);
    }

    for(int i = 0; i < n; i++){
        cout << pref_sum[i] + min_num + 1 << ' ';
    }

}

int main(){
    ifile.open("circlecross.in");
    ofile.open("circlecross.out");

    if(test_cases){
        int t;
        cin >> t;
        while(t--){
            solution();
        }
    }

    else{
        solution();
    }
} 
#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...