比赛 平凡的题目 评测结果 EEEEEEEEEE
题目名称 平凡的数据范围 最终得分 0
用户昵称 KZNS 运行时间 0.936 s
代码语言 C++ 内存使用 11.76 MiB
提交时间 2015-11-03 11:56:33
显示代码纯文本
// KZ's
#include <fstream>
using namespace std;
ifstream fin ("xor_equ.in");
ofstream fout ("xor_equ.out");
///////
int n,tr[1500000][2]={0},tru=2,trh=0,troot=1;
unsigned long long e;
///////
void ckin(int i,unsigned long long &u,int c,unsigned long long &e) {
	if (!c)
		return;
	if (u&(1<<(c-1)))
		if (tr[i][0]) {
			e<<=1;
			e|=1;
			ckin(tr[i][0],u,c-1,e);
		}
		else {
			e<<=1;
			ckin(tr[i][1],u,c-1,e);
		}
	else
		if (tr[i][1]) {
			e<<=1;
			e|=1;
			ckin(tr[i][1],u,c-1,e);
		}
		else {
			e<<=1;
			ckin(tr[i][0],u,c-1,e);
		}
}
unsigned long long ck (unsigned long long u) {
	unsigned long long e=u>>trh;
	ckin(troot,u,trh,e);
	return e;
}
void in(unsigned long long u) {
	unsigned long long k=0;
	int trhu=trh,tu=troot;
	while (1) {
		if (u&(1<<trh)) {
			tr[tru][1]=troot;
			troot=tru;
			tru++;
			trh++;
		}
		else {
			if(u&((~k)<<trh)) {
				tr[tru][0]=troot;
				troot=tru;
				tru++;
				trh++;
			}
			else
				break;
		}
	}
	for (;trhu>0;trhu--) {
		if (u&(1<<(trhu-1))) {
			if (tr[tu][1])
				tu=tr[tu][1];
			else {
				tr[tu][1]=tru;
				tu=tru;
				tru++;
			}
		}
		else {
			if (tr[tu][0])
				tu=tr[tu][0];
			else {
				tr[tu][0]=tru;
				tu=tru;
				tru++;
			}
		}
	}
}
void work() {
	fin>>n;
	unsigned long long u,ed,mx=0;
	for (int i=0;i<n;i++) {
		fin>>u;
		ed=ck(u);
		if (u>mx)
			mx=u;
		if (ed>mx)
			mx=ed;
		in(u);
		in(ed);
	}
	fout<<mx<<endl;
}
/////////
int main() {
	work();
	return 0;
}
// UBWH