80Pt ,最后一个点RE ,求调
查看原帖
80Pt ,最后一个点RE ,求调
751062
Diary_Of_Young楼主2024/10/18 15:39
#include<bits/stdc++.h>
using namespace std;

const int N = 100010;
int son[N][5];
int cnt[N] , idx;

void insert(int x)
{
	int p = 0;
	for(int i = 31 ; i >= 0 ; i --)
	{
		int u = (x >> i) & 1;
		if(!son[p][u]) son[p][u] = ++ idx;
		p = son[p][u];
	}
	cnt[p] ++;
}

int found(int x)
{
	int p = 0 , res = 0 , tmp = 1;
	for(int i = 31 ; i >= 0 ; i -- )
	{
		int u = (x >> i) & 1;
		if(son[p][1 ^ u]) res = res ^ (1 << i) , p = son[p][1 ^ u];
		else p = son[p][u];
	}
	return res;
}

int n , a[N];

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	cin >> n;
	for(int i = 1;i<= n;i ++) cin >> a[i] , insert(a[i]);
	int maxn = -1e9 ;
//	for(int i = 1 ;i<= n ; i ++) cout << found(a[i]) << endl;
	for(int i = 1;i<= n ; i ++) maxn = max(maxn , found(a[i]));
	cout << maxn ;
	return 0;
}
2024/10/18 15:39
加载中...