trie+贪心
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int a[35],ch[N*35][2],sum[N*35],rt=1,sz=1,temp; int query(){ int k=rt; for(int i=32;i>=1;--i){ if(ch[k][!a[i]])k=ch[k][!a[i]]; else k=ch[k][a[i]]; } return temp^sum[k]; } void build(){ int k=rt; for(int i=32;i>=1;--i){ if(!ch[k][a[i]])ch[k][a[i]]=++sz; k=ch[k][a[i]]; } sum[k]=temp; } int main(){ int n,ans=0; scanf("%d",&n); for(int i=1;i<=n;++i){ int t; scanf("%d",&t);temp=t; memset(a,0,sizeof(a)); for(int j=1;j<=32;++j){ if(t&1)a[j]=1; t>>=1; } if(i!=1)ans=max(ans,query()); build(); } printf("%d",ans); return 0; }