Codeforces Round #443 (Div. 2) B. Table Tennis(模拟)

ゞ 浴缸里的玫瑰 2022-06-06 02:05 266阅读 0赞

B. Table Tennis

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

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 after which a player leaves, respectively.

The second line contains n integers a1, a2, …, a**n (1 ≤ a**i ≤ n) — powers of the player. It’s guaranteed that this line contains a valid permutation, i.e. all a**i are distinct.

Output

Output a single integer — power of the winner.

Examples

input

  1. 2 2
  2. 1 2

output

  1. 2

input

  1. 4 2
  2. 3 1 2 4

output

  1. 3

input

  1. 6 2
  2. 6 5 3 1 2 4

output

  1. 6

input

  1. 2 10000000000
  2. 2 1

output

  1. 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.

题解:

本来也是很水的一题,昨天大意了早早得锁掉了题emmmm然后被人hack了,后来发现hack我的那个人自己那题也被别人hack了hhhhhhhhh

后来发现是手抖打错一个地方qaq,样例莫名其妙就过了

就是当k>=n时就直接输出最大的那个,否则用队列模拟(因为n最大才500)

代码:

  1. #include<iostream>
  2. #include<cstring>
  3. #include<stdio.h>
  4. #include<math.h>
  5. #include<string>
  6. #include<stdio.h>
  7. #include<queue>
  8. #include<stack>
  9. #include<map>
  10. #include<vector>
  11. #include<deque>
  12. #include<algorithm>
  13. #define ll long long
  14. #define INF 1008611111
  15. #define M (t[k].l+t[k].r)/2
  16. #define lson k*2
  17. #define rson k*2+1
  18. using namespace std;
  19. struct node
  20. {
  21. int v;
  22. int p;
  23. }a[505];
  24. int cmp(node x,node y)
  25. {
  26. return x.v>y.v;
  27. }
  28. queue<node>q;
  29. int main()
  30. {
  31. int i,j,n,k;
  32. int b[505];
  33. scanf("%d%d",&n,&k);
  34. for(i=1;i<=n;i++)
  35. {
  36. scanf("%d",&a[i].v);
  37. b[i]=a[i].v;
  38. a[i].p=i;
  39. }
  40. sort(a+1,a+n+1,cmp);
  41. if(k>=n-1)
  42. {
  43. printf("%d\n",a[1].v);
  44. return 0;
  45. }
  46. int add=0,d=1,tag=0;
  47. node now,next;
  48. while(1)
  49. { if(!tag)
  50. for(i=2;i<=n;i++)
  51. {
  52. if(b[d]>b[i])
  53. {
  54. add++;
  55. if(add>=k)
  56. {
  57. printf("%d\n",b[d]);
  58. return 0;
  59. }
  60. now.p=i;
  61. now.v=b[i];
  62. q.push(now);
  63. }
  64. else
  65. {
  66. now.p=d;
  67. now.v=b[d];
  68. q.push(now);
  69. add=1;
  70. d=i;
  71. }
  72. }
  73. else
  74. {
  75. while(!q.empty())
  76. {
  77. now=q.front();
  78. q.pop();
  79. if(now.v>b[d])
  80. {
  81. next.p=d;
  82. next.v=b[d];
  83. add=1;
  84. q.push(next);
  85. d=now.p;
  86. }
  87. else
  88. {
  89. add++;
  90. if(add>=k)
  91. {
  92. printf("%d\n",b[d]);
  93. return 0;
  94. }
  95. q.push(now);
  96. }
  97. }
  98. }
  99. tag=1;
  100. }
  101. return 0;
  102. }

发表评论

表情:
评论列表 (有 0 条评论,266人围观)

还没有评论,来说两句吧...

相关阅读