64 lines
871 B
C++
64 lines
871 B
C++
#include<iostream>
|
|
#include<vector>
|
|
#include<algorithm>
|
|
#include<cstring>
|
|
int ch[25*600005][2],idx;
|
|
using namespace std;
|
|
void insert(int &x)
|
|
{
|
|
int p=0;
|
|
for(int i=8;i>=0;i--)
|
|
{
|
|
int j=x >> i & 1;
|
|
if(!ch[p][j])ch[p][j]=++idx;
|
|
p=ch[p][j];
|
|
}
|
|
}
|
|
int query(int x)
|
|
{
|
|
int p=0,res=0;
|
|
for(int i=8;i>=0;i--)
|
|
{
|
|
int j=x >> i & 1;
|
|
if(ch[p][!j]){
|
|
res+= 1 << i;
|
|
p=ch[p][!j];
|
|
}
|
|
else p=ch[p][j];
|
|
}
|
|
return res;
|
|
}
|
|
void solve(){
|
|
int n,res1;
|
|
cin>>n;
|
|
vector <int> preres(n,0);
|
|
for(int i=0;i<=n-1;i++)
|
|
{
|
|
if(i==0)cin>>res1;
|
|
else {
|
|
int x;
|
|
cin>>x;
|
|
res1 ^= x;
|
|
}
|
|
preres[i]=res1;
|
|
}
|
|
for_each(preres.begin(),preres.end(),insert);
|
|
int ans=0;
|
|
for(int i=0;i<=n-1;i++)
|
|
{
|
|
ans=max(ans,query(preres[i]));
|
|
ans=max(ans,preres[i]);
|
|
}
|
|
cout<<ans<<"\n";
|
|
}
|
|
int main()
|
|
{
|
|
int t;
|
|
cin>>t;
|
|
for(int i=1;i<=t;i++)
|
|
{
|
|
memset(ch,0,sizeof ch);
|
|
solve();
|
|
}
|
|
}
|