Submission #837719

#TimeUsernameProblemLanguageResultExecution timeMemory
837719KerimDistributing Candies (IOI21_candies)C++17
3 / 100
5073 ms24716 KiB
#include "candies.h"
#include "bits/stdc++.h"
using namespace std;
const int N = 2e5+5;
vector<int> add[N], rem[N];
int arr[N];
vector<int> distribute_candies(vector<int> c, vector<int> l, vector<int> r, vector<int> v) {
    int n = c.size(), q = l.size();
    vector<int> s(n);
    for (int i = 0; i < q; i++){
        add[l[i]].push_back(i);
        rem[r[i]].push_back(i);
    }
    for (int i = 0; i < n; i++){
        for (auto pos: add[i])
            arr[pos] = v[pos];
        int sum = 0, mn = 0, mx = 0, pos = -1;
        for (int j = q-1; j >= 0; j--){
            sum += arr[j];
            mx = max(mx, sum);
            mn = min(mn, sum);
            if (mx - mn > c[i]){
                pos = j;
                break;
            }
        }
        if (mx - mn > c[i]){
            if (arr[pos] > 0)
                s[i] = c[i] + mn;
            else
                s[i] = mx;
        }
        else    
            s[i] = mx;
        for (auto pos: rem[i])
            arr[pos] = 0;
    }
    return s;
}
#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...