Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int get(int t, int l, int r, int k) {
- if (r - l == 1) {
- return l;
- }
- int m = (r + l) / 2;
- if (k > tree[2 * t + 1]) {
- get(t * 2 + 2, m, r, k - tree[2 * t + 1]);
- } else {
- get(t * 2 + 1, l, m, k);
- }
- }
- void update(int t, int l, int r, int x) {
- if (x < l || r <= x) {
- return;
- }
- if (r - l == 1) {
- tree[t] ^= 1;
- return;
- }
- int m = (l + r) / 2;
- update(t * 2 + 1, l, m, x);
- update(t * 2 + 2, m, r, x);
- tree[t] = tree[t * 2 + 1] + tree[t * 2 + 2];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement