| 16 | t->l = res.second; augment(t); |
| 17 | return make_pair(res.first, t); } |
| 18 | node* merge(node *l, node *r) { |
| 19 | if (!l) return r; if (!r) return l; |
| 20 | if (l->y > r->y) { |
| 21 | l->r = merge(l->r, r); augment(l); return l; } |
| 22 | r->l = merge(l, r->l); augment(r); return r; } |
| 23 | node* find(node *t, int x) { |
| 24 | while (t) { |
| 25 | if (x < t->x) t = t->l; |