80分RE求diao
查看原帖
80分RE求diao
1043209
lmayyds楼主2024/7/20 09:13
#include<bits/stdc++.h>
using namespace std;
long long cnt,n,a[1000005],sum,p,t,no,ans;
char c[1000005];
struct d{
	long long s[2];
}nd[1000005];
void in(long long num){
	no=0;
	for(int i=31;i>=0;--i){
		t=(num>>i)&1;
		if(!nd[no].s[t])nd[no].s[t]=++cnt;
		no=nd[no].s[t];
	}
	return;
}
long long fd(long long num){
	ans=no=0;
	for(int i=31;i>=0;--i){
		t=(num>>i)&1;
		if(!nd[no].s[t^1]){
			no=nd[no].s[t];
		}
		else{
			no=nd[no].s[t^1];
			ans=ans^(1<<i);
		}
	}
	return ans;
}
int main(){
	cin.tie(0),ios::sync_with_stdio(0);
	cin>>n;
	for(int i=1;i<=n;++i){
		cin>>a[i];
		in(a[i]);
	} 
	for(int i=1;i<=n;++i){
		sum=max(sum,fd(a[i]));
	}
	cout<<sum;
	return 0; 
}
2024/7/20 09:13
加载中...