# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
894680 | Tam_theguide | Monkey and Apple-trees (IZhO12_apple) | C++17 | 162 ms | 153392 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
const int INF = 1e9;
struct node {
int v, lazy, l, r, tl, tr;
node() : v(0), lazy(0), l(-1), r(-1) {}
} seg[64*N];
int cnt;
void push(int root) {
seg[root].v = (seg[root].tr - seg[root].tl + 1);
seg[root].lazy = 1;
}
void update(int root, int tl, int tr, int l, int r) {
if (tl > r || tr < l) return;
if (tl >= l && tr <= r) {
push(root);
return;
}
int tm = (tl + tr) / 2;
if (seg[root].l == -1) {
seg[root].l = ++cnt;
seg[seg[root].l].tl = tl;
seg[seg[root].l].tr = tm;
}
if (seg[root].r == -1) {
seg[root].r = ++cnt;
seg[seg[root].r].tl = tm+1;
seg[seg[root].r].tr = tr;
}
if (seg[root].lazy)
push(seg[root].l), push(seg[root].r), seg[root].lazy = 0;
update(seg[root].l, tl, tm, l, r);
update(seg[root].r, tm+1, tr, l, r);
seg[root].v = seg[seg[root].l].v + seg[seg[root].r].v;
}
int get(int root, int tl, int tr, int l, int r) {
if (tl > r || tr < l) return 0;
if (tl >= l && tr <= r) return seg[root].v;
int tm = (tl + tr) / 2;
if (seg[root].l == -1) {
seg[root].l = ++cnt;
seg[seg[root].l].tl = tl;
seg[seg[root].l].tr = tm;
}
if (seg[root].r == -1) {
seg[root].r = ++cnt;
seg[seg[root].r].tl = tm+1;
seg[seg[root].r].tr = tr;
}
if (seg[root].lazy)
push(seg[root].l), push(seg[root].r), seg[root].lazy = 0;
return get(seg[root].l, tl, tm, l, r) + get(seg[root].r, tm+1, tr, l, r);
}
int q;
int main() {
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> q;
++cnt;
seg[1].tl = 0;
seg[1].tr = INF;
int c = 0;
while (q--) {
int cm, x, y;
cin >> cm >> x >> y;
x += c;
y += c;
if (cm == 1) {
c = get(1, 0, INF, x, y);
cout << c << '\n';
} else {
update(1, 0, INF, x, y);
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |