| 34 | pnode version[N]; |
| 35 | |
| 36 | void insert(int a, int time) { |
| 37 | pnode v = version[time] = last = last->clone(); |
| 38 | for (int i = K - 1; i >= 0; --i) { |
| 39 | int bit = (a >> i) & 1; |
| 40 | pnode &child = v->to[bit]; |
| 41 | child = child->clone(); |
| 42 | v = child; |
| 43 | v->time = time; |
| 44 | } |
| 45 | } |
| 46 | |
| 47 | int query(pnode v, int x, int l) { |
| 48 | int ans = 0; |