Submission #1233538

#TimeUsernameProblemLanguageResultExecution timeMemory
1233538rythm_of_knightDistributing Candies (IOI21_candies)C++17
8 / 100
62 ms9800 KiB
#include "candies.h"
#include <bits/stdc++.h>
#define ar array
#define all(x) x.begin(), x.end()

using namespace std;
typedef long long ll;

struct segtree {
    vector <ar <int, 2>> t;
    int n;
    void init(int sz) {
        n = sz, sz += 5;
        t.assign(sz << 2, {0, 0});
    }
    void ontop(ar <int, 2> a, ar <int, 2> b) {
        ar <int, 2> res = a;
        if (a[0] == 0) {
            if (b[0] == 2) {
                if (b[1] > 0) {
                    res = {3, b[1]};
                }
            } else {
                res = b;
            }
        } else if (a[0] == 1) {
            if (b[0] == 2) {
                if (b[1] < 0) {
                    res = {4, b[1]};
                }
            } else {
                res = b;
            }
        } else if (a[0] == 2) {
            if (b[0] == 2) {
                res[1] += b[1];
            } else {
                res = b;
            }
        } else if (a[0] == 3) {
            if (b[0] == 2) {
                if (a[1] + b[1] <= 0)
                    res = {0, 0};
                else
                    res[1] += b[1];
            } else {
                res = b;
            }
        } else {
            // if (b[0] == 2) {
            //     if ()
            // } else {
            //     res = b;
            // }
        }
    }
    void push(int v, int l, int r) {

    }
    int ql, qr, qi, qx, qt;
    void update(int v, int l, int r) {
        if (ql <= l && r <= qr) {

        }
    }
};

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), b(n);
    vector <ll> p(n + 1);
    // vector <ar <int, 2>> a(n);
    // for (int i = 0; i < n; i++)
    //     a[i] = {c[i], i};
    // sort(all(a));
    for (int i = 0; i < q; i++) {
        p[l[i]] += v[i];
        p[r[i] + 1] -= v[i];
    }
    for (int i = 1; i < n; i++)
        p[i] += p[i - 1];
    for (int i = 0; i < n; i++)
        s[i] = min(p[i], (ll)c[i]);
    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...