Submission #1255240

#TimeUsernameProblemLanguageResultExecution timeMemory
1255240MisterReaperMonkey and Apple-trees (IZhO12_apple)C++20
100 / 100
189 ms102688 KiB
// File F.cpp created on 08.08.2025 at 20:15:00 #include <bits/stdc++.h> using i64 = long long; #ifdef DEBUG #include "/home/ahmetalp/Desktop/Workplace/debug.h" #else #define debug(...) void(23) #endif int Q; constexpr int N = int(1E9); constexpr int max_Q = int(1E5) + 5; constexpr int LOG = 65; struct node { int sum = 0, lc = -1, rc = -1; bool lz = false; node() {} } tree[max_Q * LOG]; int node_alloc = 0; int new_node() { return node_alloc++; } #define def int mid = (l + r) >> 1; void push(int v, int l, int r) { def; if (tree[v].lc == -1) { tree[v].lc = new_node(); tree[v].rc = new_node(); } if (tree[v].lz) { tree[tree[v].lc].lz = true; tree[tree[v].lc].sum = mid - l + 1; tree[tree[v].rc].lz = true; tree[tree[v].rc].sum = r - mid; tree[v].lz = false; } } void modify(int v, int l, int r, int ql, int qr) { if (ql == l && r == qr) { tree[v].lz = true; tree[v].sum = r - l + 1; return; } push(v, l, r); def; if (qr <= mid) { modify(tree[v].lc, l, mid, ql, qr); } else if (mid + 1 <= ql) { modify(tree[v].rc, mid + 1, r, ql, qr); } else { modify(tree[v].lc, l, mid, ql, mid); modify(tree[v].rc, mid + 1, r, mid + 1, qr); } tree[v].sum = tree[tree[v].lc].sum + tree[tree[v].rc].sum; } int get(int v, int l, int r, int ql, int qr) { if (ql == l && r == qr) { return tree[v].sum; } push(v, l, r); def; if (qr <= mid) { return get(tree[v].lc, l, mid, ql, qr); } else if (mid + 1 <= ql) { return get(tree[v].rc, mid + 1, r, ql, qr); } else { return get(tree[v].lc, l, mid, ql, mid) + get(tree[v].rc, mid + 1, r, mid + 1, qr); } } int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cin >> Q; int root = new_node(); int C = 0; while (Q--) { int TP, X, Y; std::cin >> TP >> X >> Y; X += C; Y += C; if (TP == 1) { int ans = get(root, 1, N, X, Y); std::cout << ans << '\n'; C = ans; } else { modify(root, 1, N, X, Y); } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...