| 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; |
| 26 | else if (t->x < x) t = t->r; |
| 27 | else return t; } |
| 28 | return NULL; } |
| 29 | node* insert(node *t, int x, int y) { |
| 30 | if (find(t, x) != NULL) return t; |
| 31 | pair<node*,node*> res = split(t, x); |