cf786C(xjb)
题目链接:http://codeforces.com/problemset/problem/768/C
题意:给出一个数组,经过k次操作后最大元素和最小元素分别是什么。。
操作:给当前数组排序,再将第奇数个元素异或 x;
思路:由于异或运算的性质,经过落干次操作后会形成稳定的数组;
代码:
1 #include <iostream> 2 #include <algorithm> 3 #include <string.h> 4 using namespace std; 5 6 const int inf=1e5; 7 const int MAXN=1e5+10; 8 int a[MAXN], b[MAXN], c[MAXN]; 9 10 int main(void){ 11 int n, k, x; 12 cin >> n >> k >> x; 13 for(int i=0; i<n; i++){ 14 cin >> a[i]; 15 } 16 for(int i=0; i<k; i++){ 17 sort(a, a+n); 18 for(int j=0; j<n; j++){ 19 if((j+1)&1){ 20 a[j]^=x; 21 } 22 } 23 sort(a, a+n); 24 b[i]=a[0]; 25 c[i]=a[n-1]; 26 if(i>=2&&b[i]==b[i-1]&&b[i]==b[i-2]&&c[i]==c[i-1]&&c[i]==c[i-2]) break; 27 } 28 cout << a[n-1] << " " << a[0] << endl; 29 return 0; 30 }
我就是我,颜色不一样的烟火 --- geloutingyu