[编程题]晋级人数

小团是某综艺节目的策划,他为某个游戏环节设计了一种晋级规则,已知在这个游戏环节中每个人最后都会得到一个分数score_i,显而易见的是,游戏很有可能出现同分的情况,小团计划该环节晋级人数为x人,则将所有人的分数从高到低排序,所有分数大于等于第x个人的分数且得分不为0的人都可以晋级。

请你求出本环节的实际晋级人数。显然这个数字可能是0,如果所有人的得分都是0,则没有人满足晋级条件。

输入描述:
输入第一行包含两个正整数n和x,分别表示参加本环节的人数,和小团指定的x。

输入第二行包含n个整数,每个整数表示一位选手的得分。

输出描述:
输出仅包含一个整数,表示实际晋级人数。

输入例子1:
5 4
0 0 2 3 4

输出例子1:
3

分析:如果在第x人之前存在分数相同的情况,则晋级人数可能会大于x。

result_ls = []
while True:
    try:
        n, x = map(int, input().split())
        n_ls = list(map(int, input().split()))
        n_ls.sort(reverse=True)
        #print(n_ls)
        y = n - 1
        num = n_ls[x-1]
        flag = False
        while y > 0:
            if n_ls[y] == 0:
                y -= 1
            else:
                result_ls.append(y + 1)
                flag = True
                break

        if not flag:
            result_ls.append(0)

    except Exception as e:
        #print(e)
        break
for _ in result_ls:
    print(_)

原文地址:https://www.cnblogs.com/chenjo/p/14706498.html