【华为机试】2023年真题B卷(python)-冠亚军排名-奖牌榜排名

一、题目

题目描述:

2012伦敦奥运会即将到来,大家都非常关注奖牌榜的情况,现在我们假设奖牌榜的排名规则如下. 
1.首先gold medal数量多的排在前面 
2.其次silver medal数量多的排在前面 
3.然后bronze medal数量多的排在前面 
4.若以上三个条件仍无法区分名次,则以国家名称的字典顺序排定 我们假设国家名称不超过二十个字符,各类奖牌数不超过100,且大于0

二、输入输出

输入描述:
第一行输入一个整数N(0 具体见样例输入。
5 China 32 28 34 
England 12 34 22 
France 23 33 2 
Japan 12 34 25 
Rusia 23 43 0
输出描述:
输出奖牌榜的依次顺序,只输出国家名称,各占一行,具体见样例输出 China Rusia France Japan England

三、示例

示例1: 
输入:

China 32 28 34 
England 12 34 22 
France 23 33 2 
Japan 12 34 25
Rusia 23 43 0 
输出:
China

Rusia

France

Japan

England 
说明:

四、解题思路

自定义排序

五、参考代码 

# -*- coding: utf-8 -*-
'''
@File    :   2023-B-冠亚军排名-奖牌榜排名.py
@Time    :   2023/12/29 18:50:01
@Author  :   mgc 
@Version :   1.0
@Desc    :   None
'''

import bisect

def print_countries_by_medals(num_countries):
    
    countries = []

    for _ in range(num_countries):
        name, gold, silver, bronze = input().strip().split()
        gold, silver, bronze = -int(gold), -int(silver), -int(bronze)
        country_tuple = (gold, silver, bronze, name)  # 创建国家元组
        bisect.insort(countries, country_tuple)  # 将国家元组按奖牌数插入到合适的位置

    for country in countries:
        print(country[3])  # 输出国家名称

num_countries = int(input().strip())  # 国家数量
print_countries_by_medals(num_countries)

你可能感兴趣的:(华为机试,华为,python,算法,华为机试,冠亚军排名-奖牌榜排名)