Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // water = tree<int,null_type,less<int>rb_tree_tag,tree_order_statistics_node_update>
- int l = pos, r = water.size(), lb, rb;
- while (l + 1 < r) {
- int m = (l + r) >> 1;
- if (*(water.fbo(m)) - x > m - pos) r = m;
- else l = m;
- }
- if (*(water.fbo(r)) - x == r - pos) rb = x + r - pos;
- else rb = x + l - pos;
- l = 0, r = pos;
- while (l + 1 < r) {
- int m = (l + r) >> 1;
- if (x - *(water.fbo(m)) > pos - m) l = m;
- else r = m;
- }
- if (x - *(water.fbo(l)) == pos - l) lb = x - pos + l;
- else lb = x - pos + r;
- water.erase(rb - (x - lb));
- water.insert(lb - 1);
- water.insert(rb + 1);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement