比赛 |
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;
}