分析
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/63276a63406b0fd1dc0fc434db01603a.png)
代码
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N=100010;
const int M=N*31;
int son[M][2];
int idx;
void insert(int x){
int p=0;
for(int i=30;i>=0;i--){
int u=x >> i & 1;
if(!son[p][u])son[p][u]=++idx;
p=son[p][u];
}
}
int query(int x){
int p=0;
int res=0;
for(int i=30;i>=0;i--){
int u=x >> i & 1;
res*=2;
if(son[p][!u]){
res+=!u;
p=son[p][!u];
}else{
res+=u;
p=son[p][u];
}
}
return res;
}
int main(){
int n;
cin >> n;
int ans=0;
for(int i=0;i<n;i++){
int x;
cin >> x;
insert(x);
int t=query(x);
ans=max(ans,t^x);
}
cout << ans;
}