http://codeforces.com/contest/768/problem/C
循环节居然是4不是2,比赛时以为是2结果被hack了
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
int a[100005], c[100005], xh[100005][2];
int main(void)
{
int i, n, k, j, x, mn, mx, c;
scanf("%d%d%d", &n, &k, &x);
mx = -1, mn = 10005;
for(i=1;i<=n;i++)
{
scanf("%d", &a[i]);
mx = max(mx, a[i]);
mn = min(mn, a[i]);
}
c = 0, xh[0][0] = xh[0][1] = -1;
for(j=1;j<=k;j++)
{
sort(a+1, a+n+1);
mx = -1, mn = 10005;
for(i=1;i<=n;i++)
{
if(i%2)
a[i] ^= x;
mx = max(mx, a[i]);
mn = min(mn, a[i]);
}
if(j<=5)
continue;
if(mx==xh[0][0] && mn==xh[0][1] && c>2)
{
k = (k-j)%c;
printf("%d %d\n", xh[k][0], xh[k][1]);
return 0;
}
xh[c][0] = mx, xh[c++][1] = mn;
}
printf("%d %d\n", mx, mn);
return 0;
}