답안 #689834

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
689834 2023-01-29T13:44:53 Z lovezah 원숭이와 사과 나무 (IZhO12_apple) C++17
0 / 100
527 ms 262144 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) {
        push();
        if (qr <= l || r <= ql) return;
        if (ql <= l && r <= qr) {
            lz = 1; push();
            return;
        }
        F0R(i, 2) c[i]->upd(ql, qr);
        pull();
    }
    int qry(int ql, int qr) {
        push();
        if (qr <= l || r <= ql) return 0;
        if (ql <= l && r <= qr) return val;
        int res = 0;
        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;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 25 ms 9548 KB Output is correct
5 Correct 30 ms 11532 KB Output is correct
6 Correct 30 ms 11084 KB Output is correct
7 Correct 31 ms 11468 KB Output is correct
8 Correct 241 ms 86960 KB Output is correct
9 Correct 473 ms 150560 KB Output is correct
10 Correct 492 ms 166908 KB Output is correct
11 Correct 511 ms 179316 KB Output is correct
12 Correct 527 ms 184672 KB Output is correct
13 Correct 494 ms 215324 KB Output is correct
14 Correct 508 ms 217536 KB Output is correct
15 Runtime error 397 ms 262144 KB Execution killed with signal 9
16 Halted 0 ms 0 KB -