2021年度训练联盟热身训练赛第二场 D - Soccer Standings

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
省略了算总分和累计己方进球数和对方进球数的赘余,

for _ in range(int(input())):
    team_num, match_num = map(int, input().split())
    team = list(input().split())
    team.sort()
    dict = {}
    for i in team:
        dict[i] = [0] * 6
    for k in range(match_num):
        g1, goal1, g2, goal2 = input().split()# *直接分开给变量, 比直接套列表方便得多
        if int(goal1) < int(goal2):
            dict[g1][2] += 1
            dict[g2][1] += 1
        elif int(goal1) == int(goal2):
            dict[g1][3] += 1
            dict[g2][3] += 1
        elif int(goal1) > int(goal2):
            dict[g1][1] += 1
            dict[g2][2] += 1
        dict[g1][4] += int(goal1)
        dict[g1][5] += int(goal2)
        dict[g2][4] += int(goal2)
        dict[g2][5] += int(goal1)
        dict[g1][0] = dict[g1][1] * 3 + dict[g1][3]
        dict[g2][0] = dict[g2][1] * 3 + dict[g2][3]
    lst = sorted(list(dict.items()), key = lambda x : x[0]) # *把字典变成列表方便排序
    lst2 = sorted(lst, key = lambda x : (x[1][0], x[1][4] - x[1][5], x[1][4]), reverse=True)# 这里用到了多关键字排序
    print('Group',_ + 1, end = '')
    print(':')# 因为预期输出的冒号和数字很近, 直接像上一行一样的话会多一个空格
    for i in lst2:
        print(i[0], end = ' ')
        print(*i[1])
    print()# 预计输出是两个回车间隔
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值