比赛 NOIP模拟赛1 评测结果 WWEEEEEEEE
题目名称 异或 最终得分 0
用户昵称 Furyton 运行时间 0.729 s
代码语言 C++ 内存使用 3.30 MiB
提交时间 2018-02-08 20:52:18
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cstdlib>
#define File(x) "xorxor."#x
#define Memset(a,v) memset(a, b, sizeof a)
#define Min(a,b) ((a)=((a)<(b)?(a):(b)))
#define For(i,s,e) for(int i=(s); i<=(e); i++)
#define Rep(i,s,e) for(int i=(s); i>=(e); i--)
using namespace std;

const int N=100000+10,inf=0x7fffffff;
struct NUM{
	long long num;
	bool bit[21];
	bool operator < (NUM & o) const
	{
		Rep(i,20,0) if(bit[i]<o.bit[i]) return 1;
		else if(bit[i]>o.bit[i]) return 0;
	}
}a[N];

long long wait[N];
int k,n;

bool cmp(NUM a, NUM b)
{
	Rep(i,20,0) if(a.bit[i]<b.bit[i]) return 1;
	else if(a.bit[i]>b.bit[i]) return 0;
}

int main()
{
	freopen(File(in),"r",stdin);
	freopen(File(out),"w",stdout);

//	ios::sync_with_stdio(false);

	scanf("%d%d",&n,&k);
	For(i,1,n)
	{
		scanf("%lld",&a[i].num);
		For(i,0,20) a[i].bit[i]=(a[i].num&(1<<i));
	}
	sort(a+1,a+n+1,cmp);
	int cnt=0;
	For(i,1,n)
	{
		For(j,i+1,n)
		{
			wait[++cnt]=(a[i].num^a[j].num);
			if(cnt==k) goto label; 
		}
	}
	
	label:
	
	sort(wait+1,wait+1+cnt);
	cout<<wait[cnt]<<endl;

	return 0;
}