01字典树
#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
int n,m,cnt;
int trie[21*maxn][2];
int val[21*maxn];
void init()
{
cnt=0;
mem(val,0); mem(trie,0);
}
void add(int cid)
{
int rt=0,id;
for(int i=19;i>=0;i--)
{
id=(cid>>i)&1;
if(!trie[rt][id]) trie[rt][id]=++cnt;
rt=trie[rt][id];
}
val[rt]=cid;
}
int query(int pid)
{
int rt=0,id;
for(int i=19;i>=0;i--)
{
id=(pid>>i)&1;
if(trie[rt][id^1]) rt=trie[rt][id^1];
else rt=trie[rt][id];
}
return val[rt];
}