Submission #689838

# Submission time Handle Problem Language Result Execution time Memory
689838 2023-01-29T13:48:31 Z lovezah Monkey and Apple-trees (IZhO12_apple) C++17
100 / 100
628 ms 257996 KB
#include <bits/stdc++.h>
namespace newbiezah {
#ifdef LOCAL
#include "E:\cp-Library\debug.h"
#else
#define dbg(...)
#endif

#define ALL(x) (x).begin(), (x).end() 
#define RALL(x) (x).rbegin(), (x).rend()
#define SZ(x) (int((x).size()))
#define REV(x) reverse(ALL(x))
#define UNIQUE(x) sort(ALL(x)), x.erase(unique(ALL(x)), x.end())
#define mask(x) (1 << (x))
#define fi first
#define se second
#define ft front()
#define bk back()
#define ppb pop_back()
#define ppf pop_front()
#define pb push_back
#define pf push_front
#define eb emplace_back 
#define mp make_pair
#define ins insert
#define lb lower_bound
#define ub upper_bound
#define tcT template<class T

tcT> using V = std::vector<T>;
tcT> int ilb(V<T> &a, const T &b) { return int(lb(ALL(a), b) - a.begin()); }
tcT> int iub(V<T> &a, const T &b) { return int(ub(ALL(a), b) - a.begin()); }
tcT, size_t sz>
using AR = std::array<T, sz>;
using ll = int64_t;
using db = double;
using str = std::string;
using pi = std::pair<int, int>;
using pl = std::pair<ll, ll>;
using VI = V<int>;
using VL = V<ll>;
using VS = V<str>;
using VB = V<bool>;
using VPI = V<pi>;
using VPL = V<pl>;

std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count());
#define uid(a, b) uniform_int_distribution<int>(a, b)(rng)

tcT> using pq = std::priority_queue<T>;
tcT> using pqg = std::priority_queue<T, std::vector<T>, std::greater<T>>;
tcT> bool ckmax(T &u, T v) { return v > u ? u = v, true : false; }
tcT> bool ckmin(T &u, T v) { return v < u ? u = v, true : false; }

#define FOR(i, a, n) for (int i = (a); i < (n); i++)
#define F0R(i, n) FOR(i, 0, n)
#define FORd(i, a, n) for (int i = (n) - 1; i >= (a); i--)
#define F0Rd(i, n) FORd(i, 0, n)
#define rep(n) F0R(_, n)
#define trav(a, v) for (auto &a : v)
#define each(a, b, v) for (auto &&[a, b] : v)
#define each3(a, b, c, v) for (auto &&[a, b, c] : v)

const char nl = '\n';
const int mod1 = int(1e9)+7, mod9 = 998244353;
const int dxi[8] = {1, 0, -1, 0, 1, 1, -1, -1}, dyi[8] = {0, 1, 0, -1, 1, -1, 1, -1};
} // namespace newbiezah
using namespace newbiezah;
using namespace std;

struct node {
    int val, lz;
    int l, r;
    node* c[2];
    node(int l, int r) : l(l), r(r) {
        F0R(i, 2) c[i] = NULL;
        val = lz = 0;
    }
    ~node() { F0R(i, 2) delete c[i]; }

    void push() {
        int m = (l+r)/2;
        if (!c[0]) c[0] = new node(l, m);
        if (!c[1]) c[1] = new node(m, r);
        if (lz) {
            val = r-l;
            F0R(i, 2) c[i]->lz = 1, c[i]->val = c[i]->r - c[i]->l;
        }
        lz = 0;
    }
    void pull() {
        val = 0;
        F0R(i, 2) val += c[i]->val;
    }
    void upd(int ql, int qr) {
        if (qr <= l || r <= ql) return;
        if (ql <= l && r <= qr) {
            lz = 1; push();
            return;
        }
        push();
        F0R(i, 2) c[i]->upd(ql, qr);
        pull();
    }
    int qry(int ql, int qr) {
        if (qr <= l || r <= ql) return 0;
        if (ql <= l && r <= qr) return val;
        int res = 0;
        push();
        F0R(i, 2) res += c[i]->qry(ql, qr);
        return res;
    }
};
int n, c;

int main() {
    cin.tie(nullptr)->sync_with_stdio(false);

    cin >> n;
    node rt(0, 1e9+2);
    rep(n) {
        int t, l, r; cin >> t >> l >> r;
        l += c, r += c;
        if (t == 1) {
            c = rt.qry(l, r+1);
            cout << c << nl;
        } else {
            rt.upd(l, r+1);
        }
    }
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 22 ms 6056 KB Output is correct
5 Correct 21 ms 7216 KB Output is correct
6 Correct 22 ms 7164 KB Output is correct
7 Correct 20 ms 7244 KB Output is correct
8 Correct 170 ms 55136 KB Output is correct
9 Correct 400 ms 95984 KB Output is correct
10 Correct 374 ms 106096 KB Output is correct
11 Correct 402 ms 113960 KB Output is correct
12 Correct 378 ms 117268 KB Output is correct
13 Correct 360 ms 135256 KB Output is correct
14 Correct 361 ms 137036 KB Output is correct
15 Correct 620 ms 251212 KB Output is correct
16 Correct 628 ms 252608 KB Output is correct
17 Correct 367 ms 141660 KB Output is correct
18 Correct 393 ms 141776 KB Output is correct
19 Correct 616 ms 257996 KB Output is correct
20 Correct 618 ms 257980 KB Output is correct