Submission #986179

#TimeUsernameProblemLanguageResultExecution timeMemory
986179hanifchdnMonkey and Apple-trees (IZhO12_apple)C++14
0 / 100
340 ms262144 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define uint unsigned int #define ull unsigned long long #define pii pair<int, int> #define pll pair<ll, ll> #define fi first #define se second const int N = 2e5 + 5; struct node { ll sum, lazy; node *l, *r; node() : sum(0), lazy(0), l(nullptr), r(nullptr) {} }; node *root = new node(); void push(node *x, int tl, int tr) { if (x->lazy == 0) return; x->sum = tr - tl + 1; if (tl == tr) { x->lazy = 0; return; } if (x->l == nullptr) { x->l = new node(); x->r = new node(); } x->l->lazy = x->lazy; x->r->lazy = x->lazy; x->lazy = 0; } void update(node *x, int tl, int tr, int l, int r) { push(x, tl, tr); if (tr < l or r < tl) return; if (l <= tl and tr <= r) { x->lazy = 1; push(x, tl, tr); return; } if (x->l == nullptr) { x->l = new node(); x->r = new node(); } int tm = (tl + tr) / 2; update(x->l, tl, tm, l, r); update(x->r, tm + 1, tr, l, r); x->sum = x->l->sum + x->r->sum; } ll get(node *x, int tl, int tr, int l, int r) { push(x, tl, tr); if (tr < l or r < tl) return 0; int tm = (tl + tr) / 2; if (l <= tl and tr <= r) return x->sum; if (x->l == nullptr) { x->l = new node(); x->r = new node(); } return get(x->l, tl, tm, l, r) + get(x->r, tm + 1, tr, l, r); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int q; cin >> q; int c = 0; while (q--) { int d, x, y; cin >> d >> x >> y; if (d == 1) { c = get(root, 1, 1e9, x + c, y + c); cout << c << "\n"; } else { update(root, 1, 1e9, x + c, y + c); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...