• CodeForces


     Table Tennis 

    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.


    Example
    Input
    2 2
    1 2
    Output

    Input
    4 2
    3 1 2 4
    Output

    Input
    6 2
    6 5 3 1 2 4
    Output

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

    题意:如果a>b,a就赢了当a赢了k次,就输出a;

    思路:记录每个赢得人赢得次数,谁赢了k次就输出

    #include<stdio.h>
    #include<algorithm>
    #include<iostream>
    #include<string.h>
    using namespace std;
    int a[1000];
    int b[1000];
    int main()
    {
        int n;
        long long k;
        scanf("%d%lld",&n,&k);
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        for(int i=0; i<n; i++)
        {
            scanf("%d",&a[i]);
        }
        int x=0;
        for(int i=1; i<n; i++)
        {
            if(a[x]>a[i]&&a[i]!=-1)
            {
                a[i]=-1;
                b[x]++;
    
            }
            else if(a[x]<a[i]&&a[i]!=-1)
            {
                x=i;
                b[x]++;
            }
            if(b[x]==k)
            {
                printf("%d
    ",a[x]);
                return 0;
            }
            //cout<<x<<endl;
        }
        printf("%d
    ",a[x]);
    }
    
    


  • 相关阅读:
    [luogu P2184] 贪婪大陆 [树状数组][线段树]
    luogu P3373 【模板】线段树 2
    [luogu P3384] 【模板】树链剖分 [树链剖分]
    树链剖分膜版
    AtCoder Grand Contest 026F
    AtCoder Regular Contest 091F
    AtCoder Regular Contest 099F
    AtCoder Grand Contest 027D
    向量叉积分配律简单证明
    LOJ 538. 「LibreOJ NOIP Round #1」数列递推(找规律+结论)
  • 原文地址:https://www.cnblogs.com/da-mei/p/9053316.html
Copyright © 2020-2023  润新知