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