来源
OpenJudge网站 —— 百练习题集-第2704号习题
要求
总时间限制: 1000ms 内存限制: 65536kB
描述
现举行一次小竞赛,参赛的3支队伍,编号为1,2,3.每支队列轮流回答问题,如果回答正确,加10分;回答错误,扣10分;放弃回答不得分.经过多轮答题后,我们要统计各队的名次和得分.
输入
第一行为回答问题的轮次数n.
其余各行分别为1,2,3号队伍答题的结果,回答正确为right,错误为wrong,放弃为give-up.
输出
按名次输出各队的编号和得分.名次相同的在同一行输出,且编号小者靠前.
样例输入
4
right wrong give-up
right right right
wrong right right
right right right
样例输出
(3,30)
(1,20)(2,20)
#根据回答answer,得到得分
def ans_score(answer):
if answer[0] == 'r': #right
return 10
elif answer[0] == 'w': #wrong
return -10
else: #give-up
return 0
n = int(input())
#统计得分
scores = [0, 0, 0]
for i in range(n):
ans = input().split()
for j in range(3):
scores[j] += ans_score(ans[j])
#排序
team_scores = [(index+1, score) for index, score in enumerate(scores)]
team_scores.sort(key=lambda t_s: t_s[1], reverse=True)
#输出得分
print("(%d,%d)"%team_scores[0], end='')
if team_scores[1][1] < team_scores[0][1]:
print()
print("(%d,%d)"%team_scores[1], end='')
if team_scores[2][1] < team_scores[1][1]:
print()
print("(%d,%d)"%team_scores[2])
题目描述给出的测试用例包含一个最高分,接下来两支队伍的得分相同。
三支队伍的得分不同。
样例输入
4
right right right
right give-up right
right right wrong
right right right
样例输出
(1,40)
(2,30)
(3,20)
三支队伍的得分都相同。
样例输入
4
right right right
right right right
right right right
right right right
样例输出
(1,40)(2,40)(3,40)
三支队伍的得分不同。2号队伍得分最高。3号队伍得负分。
样例输入
4
right right wrong
right give-up right
wrong right wrong
right right wrong
样例输出
(2,30)
(1,20)
(3,-20)
n=1的边界情形。
样例输入
1
wrong give-up right
样例输出
(3,10)
(2,0)
(1,-10)