Advertisement
nq1s788

k-я единица ДО

Jun 17th, 2025
648
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.55 KB | None | 0 0
  1. int get(int t, int l, int r, int k) {
  2.     if (r - l == 1) {
  3.         return l;
  4.     }
  5.     int m = (r + l) / 2;
  6.     if (k > tree[2 * t + 1]) {
  7.         get(t * 2 + 2, m, r, k - tree[2 * t + 1]);
  8.     } else {
  9.         get(t * 2 + 1, l, m, k);
  10.     }
  11. }
  12.  
  13. void update(int t, int l, int r, int x) {
  14.     if (x < l || r <= x) {
  15.         return;
  16.     }
  17.     if (r - l == 1) {
  18.         tree[t] ^= 1;
  19.         return;
  20.     }
  21.     int m = (l + r) / 2;
  22.     update(t * 2 + 1, l, m, x);
  23.     update(t * 2 + 2, m, r, x);
  24.     tree[t] = tree[t * 2 + 1] + tree[t * 2 + 2];
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement