比赛 |
NOIP模拟赛1 |
评测结果 |
AATTTTTTTT |
题目名称 |
异或 |
最终得分 |
20 |
用户昵称 |
fanjunyi9 |
运行时间 |
8.003 s |
代码语言 |
C++ |
内存使用 |
0.49 MiB |
提交时间 |
2018-02-08 20:39:18 |
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
int a[100001];
using namespace std;
int main()
{
freopen("xorxor.in","r",stdin);
freopen("xorxor.out","w",stdout);
int n,k,i,bi=0,yh;//bi作为数组b的下标,yh存储每次计算y异或的值
scanf("%d%d",&n,&k);
int b[k+1];//b存储最小的k个数
memset(b,0,sizeof(b));
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<n;i++)
{
for(int j=i+1;j<=n;j++)
{
yh=a[i]^a[j];
bi++;//已经计算出异或值的个数
// printf("%d\n",yh);
if(k>=bi)
{
b[bi]=yh;//把前k个疑惑值放入b中
}
else sort(b+1,b+k+1);
if(yh<b[k]) //每算出一个异或值 就和b中最大的数进行比较
{
b[k]=yh;//更新b中的一个最小值
sort(b+1,b+k+1);//再一次排序
}
}
}
printf("%d",b[k]);
return 0;
}