제출 #1092021

#제출 시각아이디문제언어결과실행 시간메모리
1092021juicy원숭이와 사과 나무 (IZhO12_apple)C++17
100 / 100
128 ms54260 KiB
#include <bits/stdc++.h> using namespace std; #ifdef LOCAL #include "debug.h" #else #define debug(...) 42 #endif const int M = 1e9, N = 6000005; int n = 1; int s[N], L[N], R[N]; void psh(int id, int l) { if (!L[id]) { L[id] = ++n; } if (!R[id]) { R[id] = ++n; } if (s[id] == l) { s[L[id]] = (l + 1) / 2; s[R[id]] = l / 2; } } void upd(int u, int v, int id = 1, int l = 1, int r = M) { if (u <= l && r <= v) { s[id] = r - l + 1; return; } int m = (l + r) / 2; psh(id, r - l + 1); if (u <= m) { upd(u, v, L[id], l, m); } if (m < v) { upd(u, v, R[id], m + 1, r); } s[id] = s[L[id]] + s[R[id]]; } int qry(int u, int v, int id = 1, int l = 1, int r = M) { if (u <= l && r <= v) { return s[id]; } int m = (l + r) / 2; psh(id, r - l + 1); if (v <= m) { return qry(u, v, L[id], l, m); } if (m < u) { return qry(u, v, R[id], m + 1, r); } return qry(u, v, L[id], l, m) + qry(u, v, R[id], m + 1, r); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int m; cin >> m; int c = 0; while (m--) { int d, x, y; cin >> d >> x >> y; x += c, y += c; if (d == 1) { cout << (c = qry(x, y)) << "\n"; } else { upd(x, y); } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...