n people are standing in a line to play table tennis. At first, the first two players in the line play a game. Then the loser goes to the end of the line, and the winner plays with the next person from the line, and so on. They play until someone wins k games in a row. This player becomes the winner.
For each of the participants, you know the power to play table tennis, and for all players these values are different. In a game the player with greater power always wins. Determine who will be the winner.
Input
The first line contains two integers: n and k (2 ≤ n ≤ 500, 2 ≤ k ≤ 1012) — the number of people and the number of wins.
The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ n) — powers of the player. It's guaranteed that this line contains a valid permutation, i.e. all ai are distinct.
Output
Output a single integer — power of the winner.
Examples
input
Copy
2 2
1 2
output
2
input
Copy
4 2
3 1 2 4
output
3
input
Copy
6 2
6 5 3 1 2 4
output
6
input
Copy
2 10000000000
2 1
output
2
Note
Games in the second sample:
3 plays with 1. 3 wins. 1 goes to the end of the line.
3 plays with 2. 3 wins. He wins twice in a row. He becomes the winner.
简单题,注意k很大,当k>n时,输出最大的那个就行
#include <bits/stdc++.h> using namespace std; #define maxn 100000 typedef long long ll; #define inf 2147483647 #define ri register int vector<ll> vec; ll p[maxn]; ll cnt[maxn]; ll n, k; ll ma = 0; int main() { // freopen("test.txt", "r", stdin); cin >> n >> k; for (int i = 1; i <= n; i++) { cin >> p[i]; ma = max(ma, p[i]); vec.push_back(i); } if (k > n) { cout << ma; return 0; } while (1) { // for(ll i:vec)cout<<i<<" "; // cout<<endl; int t1 = vec.front(); vec.erase(vec.begin()); int t2 = vec.front(); vec.erase(vec.begin()); if (p[t1] > p[t2]) { cnt[t1]++; if (cnt[t1] == k) { cout << p[t1]; return 0; } vec.push_back(t2); vec.insert(vec.begin(), t1); } else { cnt[t2]++; if (cnt[t2] == k) { cout << p[t2]; return 0; } vec.push_back(t1); vec.insert(vec.begin(), t2); } } return 0; }