Submission #1058415

#TimeUsernameProblemLanguageResultExecution timeMemory
1058415vjudge1Distributing Candies (IOI21_candies)C++17
11 / 100
65 ms12980 KiB
#include "candies.h"

#include <bits/stdc++.h>
using namespace std;

using ll = long long;
using vi = vector<int>;
using vll = vector<ll>;

vi distribute_candies(vi c, vi l, vi r, vi v) {
    int n = c.size(), q = l.size();
    bool all_poz = true;
    for(auto it : v)
        if(it < 0) all_poz = false;
    if(n <= 2000 && q <= 2000) {
        vi A(n, 0);
        for(int i = 0; i < q; ++i) {
            for(int j = l[i]; j <= r[i]; ++j) {
                A[j] += v[i];
                A[j] = max(A[j], 0);
                A[j] = min(A[j], c[j]);
            }
        }
        return A;
    }
    if(all_poz) {
        vll S(n, 0);
        for(int i = 0; i < q; ++i) {
            S[l[i]] += v[i];
            if(r[i] + 1 < n) S[r[i] + 1] -= v[i];
        }
        for(int i = 1; i < n; ++i) {
            S[i] = S[i] + S[i - 1];
        }
        vi Re(n, 0);
        for(int i = 0; i < n; ++i) {
            Re[i] = min(S[i], (ll)c[i]);
        }
        return Re;
    }
    return vi();
}
#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...