Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) C. Jon Snow and his Favourite Number 循环节

C. Jon Snow and his Favourite Number

链接:

http://codeforces.com/contest/768/problem/C

题解:

根据题意,其肯定会有循环节,先模拟,然后判断一下其是否到某一次时,其最大最小值达到稳定

代码:

 1 #include <map>
 2 #include <set>
 3 #include <cmath>
 4 #include <queue>
 5 #include <stack>
 6 #include <cstdio>
 7 #include <string>
 8 #include <vector>
 9 #include <cstring>
10 #include <iostream>
11 #include <algorithm>
12 #include <functional>
13 using namespace std;
14 #define rep(i,a,n) for (int i=a;i<=n;i++)
15 #define per(i,a,n) for (int i=n;i>=a;i--)
16 #define pb push_back
17 #define mp make_pair
18 #define all(x) (x).begin(),(x).end()
19 #define fi first
20 #define se second
21 #define SZ(x) ((int)(x).size())
22 typedef vector<int> VI;
23 typedef long long ll;
24 typedef pair<int, int> PII;
25 const ll mod = 1000000007;
26 // head
27 
28 const int maxn = 1e5 + 7;
29 int a[maxn], maxx[maxn], minn[maxn];
30 
31 int main() {
32     int n, k, x;
33     cin >> n >> k >> x;
34     rep(i, 1, n) cin >> a[i];
35     sort(a + 1, a + 1 + n);
36     maxx[1] = a[n];
37     minn[1] = a[1];
38     rep(i, 1, k) {
39         sort(a + 1, a + 1 + n);
40         maxx[i] = a[n];
41         minn[i] = a[1];
42         if (i >= 3) {
43             if (maxx[i] == maxx[i - 1] && minn[i] == minn[i - 1] &&
44                 maxx[i] == maxx[i - 2] && minn[i] == minn[i - 2] &&
45                 maxx[i] == maxx[i - 3] && minn[i] == minn[i - 3]) {
46                 cout << a[n] << " " << a[1] << endl;
47                 return 0;
48             }
49         }
50         for (int j = 1; j <= n; j += 2) a[j] ^= x;
51     }
52     sort(a + 1, a + 1 + n);
53     cout << a[n] << " " << a[1] << endl;
54     return 0;
55 }
原文地址:https://www.cnblogs.com/baocong/p/6425676.html