■ 题目描述
输入描述:
输出描述:
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
4,5
10,6,9,7,6
9,10,6,7,5
8,10,6,5,10
9,10,8,4,9
输出
2,1,5
说明
第一行代表有4个评委,5个选手参加比赛
矩阵代表是4*5,每个数字是选手的编号,每一行代表一个评委对选手的打分排序,
2号选手得分36分排第1,1号选手36分排第2,5号选手30分(2号10分值有3个,1号10分值只有1个,所以2号排第一)
示例2 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
2,5
7,3,5,4,2
8,5,4,4,3
输出
-1
说明
示例3 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
4,2
8,5
5,6
10,4
8,9
输出
-1
说明
只有2名选手参加,要求最少为3名
示例4 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
4,5
11,6,9,7,8
9,10,6,7,8
8,10,6,9,7
9,10,8,6,7
输出
-1
说明
Python
def compare_score(A, B, score_list):scoreA = [ac[A] for ac in score_list]scoreB = [ac[B] for ac in score_list]scoreA.sort(reverse=True) scoreB.sort(reverse=True) totalA = sum(scoreA)totalB = sum(scoreB)if totalA > totalB:return Aelif totalA < totalB:return Belse:for index in range(int(m)):if scoreA[index] - scoreB[index] > 0:return Aelif scoreA[index] - scoreB[index] < 0:return Belse:continuedef check_variable(score_list):for li in score_list:for l in li:if int(l) > 10 or int(l) < 1:return Falsereturn Truetry:m, n = input().split(',')score_list = []flag = 1if 2 <= int(m) <= 10 and 3 <= int(n) <= 100:for i in range(int(m)):score = input().split(',')score_list.append([int(s) for s in score])flag = check_variable(score_list) if flag:namelist = []for loop in range(3): A = 0for j in range(int(n) - 1):if int(A) + 1 in namelist or j + 2 in namelist:continuebig = compare_score(A, j + 1, score_list)A = bignamelist.append(int(A) + 1) print(','.join(namelist))else:print(-1)else:print(-1)
except:print(-1)