제출 #320523

#제출 시각아이디문제언어결과실행 시간메모리
320523nishuzLabels (NOI20_labels)C++14
100 / 100
83 ms11620 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

#define ll long long
#define ull unsigned long long
#define ld long double
#define F first
#define S second
#define eb emplace_back
#define pb push_back
#define mp make_pair
#define all(x) begin(x), end(x)
#define rall(x) rbegin(x), rend(x)

using namespace __gnu_pbds;
using namespace std;

template <typename T> using oset = tree <pair <T, T>, null_type, less <pair <T, T>>, rb_tree_tag, tree_order_statistics_node_update>;

template <typename T>
void ckmin(T& a, const T b) {a = min(a, b);}

template <typename T>
void ckmax(T& a, const T b) {a = max(a, b);}

template <typename T>
void print(vector <T> v) {
    for (T i : v) cout << i << " ";
    cout << '\n';
}

template <typename T>
void print(vector <vector <T>>& v) {
    for (vector <T>& vv : v) {
        for (T& i : vv)
            cout << i << " ";
        cout << '\n';
    }
}

template <typename T>
void read(vector <T>& v) {for (T& i : v) cin >> i;}

template <typename T>
void read(T&& t) {cin >> t;}

template <typename T, typename... Args>
void read(T&& t, Args&&... args)
{
    cin >> t;
    read(forward<Args>(args)...);
}

template <typename T>
void print(T&& t) {cout << t << '\n';}

template <typename T, typename... Args>
void print(T&& t, Args&&... args)
{
    cout << t << " ";
    print(forward<Args>(args)...);
}

void usaco(string name = "")
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    if(name.size())
    {
        freopen((name+".in").c_str(), "r", stdin);
        freopen((name+".txt").c_str(), "w", stdout);
    }
}

void solve()
{
    ll n, mi = 1e18;
    cin >> n;
    vector <ll> a(n+1), p(n), b(n);
    for (ll i = 1; i < n; ++i)
    {
        cin >> p[i];
        b[i] = p[i];
        p[i] += p[i-1];
        ckmin(mi, p[i]);
    }
    ll start = 1, maxe = 1, mine = n;
    if (mi <= 0) start = abs(mi)+1;
    a[1] = start;
    ckmin(mine, start);
    ckmax(maxe, start);
    for (int i = 2; i <= n; ++i)
    {
        a[i] = a[i-1] + b[i-1];
        ckmin(mine, a[i]);
        ckmax(maxe, a[i]);
    }
    bool ok = 1;
    for (int i = 1; i <= n; ++i) ok &= (a[i] >= 1 && a[i] <= n);
    ok &= (maxe == n && mine == 1);
    if (!ok) print(-1);
    else for (int i = 1; i <= n; ++i) cout << a[i] << " ";
}

int32_t main()
{
    usaco();
    int t = 1;
    while (t--) solve();
}

컴파일 시 표준 에러 (stderr) 메시지

Labels.cpp: In function 'void usaco(std::string)':
Labels.cpp:72:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   72 |         freopen((name+".in").c_str(), "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Labels.cpp:73:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   73 |         freopen((name+".txt").c_str(), "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...