Submission #920527

#TimeUsernameProblemLanguageResultExecution timeMemory
920527MackerMonkey and Apple-trees (IZhO12_apple)C++17
0 / 100
2084 ms70884 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define all(v) v.begin(), v.end() struct node{ int val = 0; int lz = 0; }; map<int, node> st; void prop(int i, int d){ if(!st[i].lz) return; st[i * 2].val = d / 2; st[i * 2 + 1].val = d / 2; st[i * 2].lz = 1; st[i * 2 + 1].lz = 1; st[i].lz = 0; } void upd(int l, int r, int i = 1, int s = 0, int e = 2147483647){ if(l >= e || r <= s) return; if(l <= s && e <= r){ st[i].val = e - s; st[i].lz = 1; return; } prop(i, e - s); upd(l, r, i * 2, s, (s + e) / 2); upd(l, r, i * 2 + 1, (s + e) / 2, e); st[i].val = st[i * 2].val + st[i * 2 + 1].val; } int qry(int l, int r, int i = 1, int s = 0, int e = 2147483647){ if(l >= e || r <= s) return 0; if(l <= s && e <= r) return st[i].val; prop(i, e - s); return qry(l, r, i * 2, s, (s + e) / 2) + qry(l, r, i * 2 + 1, (s + e) / 2, e); } int main() { int m; cin >> m; int c = 0; for (int i = 0; i < m; i++) { int d, x, y; cin >> d >> x >> y; if(d == 1){ int res = qry(x + c, y + c + 1); cout << res << "\n"; c = res; } else{ upd(x + c, y + c + 1); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...