因为题目的数据在1000以内,可以开数组保存每一个的个数,然后直接处理..
#include <cstdio>
#include <string>
#include <cstring>
#include <queue>
#include <algorithm>
#include <functional>
#include <vector>
#include <iomanip>
#include <cmath>
#include <iterator>
#include <iostream>
#include <sstream>
#include <stack>
#include <set>
#include <bitset>
using namespace std;
const int MAX=1024;
int A[MAX],B[MAX];
int N,K,X;
int main()
{
cin.sync_with_stdio(false);
cin>>N>>K>>X;
int temp;
for (int i=0;i<N;i++)
{
cin>>temp;
A[temp]++;
}
for (int i=0;i<K;i++)
{
memset(B,0,sizeof(B));
temp=0;
for (int j=0;j<MAX;j++)
{
B[j]+=(A[j]+temp)/2;
B[j^X]+=(A[j]+1-temp)/2;
temp=(temp+A[j])&1;
}
memcpy(A,B,sizeof(A));
}
int Max=-MAX*MAX,Min=MAX*MAX;
for (int i=0;i<MAX;i++)
if (A[i]>0)
Max=max(Max,i),Min=min(Min,i);
cout<<Max<<' '<<Min<<endl;
return 0;
}