小白编程题:圣诞礼物

描述

圣诞节就要到了,同学们在做游戏获得圣诞礼物。同学们排成一队。首先,前两名同学玩游戏,然后失败者走到队尾,胜者将和下个同学比赛,直到有同学连续赢得n场比赛,则这个同学成为赢家,将获得圣诞礼物。
对于每个参与的同学,我们都知道其能量,在一场比赛中,能量强大的同学获胜,如果能量相同,后来者获胜,确定谁能获得精心准备的圣诞礼物。

I/O格式

输入

第一行包括两个整数:m和n( 2<=m<=500,2<=n<=1e12)--表示人数和赢得数目。

第二行包括m个数字 a1,a2,...,am(1<=ai<=m)--表示m个同学的能量。

输出

输出一行--获胜者的能量。

I/O样例

输入样例 1 

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

输出样例 1

2
3
6

实现

本题考虑采用双指针思想

#include<stdio.h>
#define MAX 500
int main() {
    int m;
    long n;
    while(scanf("%d %ld", &m, &n) != EOF) {
        long a[MAX + 1];
        for(long i = 1; i <= m; i++) {
            scanf("%ld", &a[i]);
        }
        long winner = 1,wins = 0;//winner:获胜者下标 wins:获胜次数
        for(long i = 2; i <= m; i++) {
            if(a[i] > a[winner]) {
                winner = i;
                wins = 1;
            } else {
                wins++;
            }
            if(wins == n) {
                break;
            }
        }
        printf("%ld\n", a[winner]);
    }
    return 0;
}

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值