Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <cstdio>#include <cstdlib>#include <cstring>const int maxn = 200010;int n, q;struct Node {int l, r, d;} t[maxn * 20];int cnt;int root[maxn];void ins(int p1, int &p2, int deep, int d){p2 = ++cnt;t[p2] = t[p1];++t[p2].d;if (deep < 0) return;if ((1 << deep) & d) ins(t[p1].r, t[p2].r, deep - 1, d);else ins(t[p1].l, t[p2].l, deep - 1, d);}int min(int a, int b) { return (a < b) ? a : b; }void init(){scanf("%d%d", &n, &q);memset(t, 0, sizeof(t));root[0] = 0;cnt = 0;