01tire算法
#include<bits/stdc++.h>
using namespace std;
#define maxn 210000
int a[maxn], ch[maxn][2], val[maxn], n, ans, tot;
void insert(int x)
{
int now = 0;
for (int j = 31; j >= 0; j -- )
{
int pos = ((x >> i) & 1);
if (!ch[now][pos])
ch[now][pos] = ++ tot;
now = ch[now][pos];
}
val[now] = x;
return ;
}
int query(int x)
{
int now = 0;
for (int j = 31; j >= 0; -- j )
{
int pos = ((x >> j) & 1);
if (ch[now][pos ^ 1])
now = ch[now][pos ^ 1];
else
now = ch[now][pos];
}
return val[now];
}
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; ++ i )
{
int x;
scanf("%d", &x);
insert(x);
}
for (int i = 1; i <= n; ++ i )
{
ans = max(ans, query(a[i]));
}
cout << ans << endl;
return 0;
}