一、题目要求身高相同时,按名字字母升序排列。先按名字字母升序排列,再按身高降序排列
二、使用循环嵌套创建嵌套列表(矩阵),如果有多余的人,将多个0插入第一行
三、用左右两个索引值,向嵌套列表中添加名字
四、输入结果,每行最后一个名字后面没有空格
n,k = map(int,input().split())
students_list = []
for i in range(n):
name,height = input().split()
students_list.append([name,int(height)])
students_list.sort() # 名字按字母升序排列
students_list.sort(key=lambda x:x[1],reverse=True) # 身高降序排列
# 创建嵌套列表
m = n // k
last_m = n % k + m
result_list = [[0 for i in range(m)] for i in range(k)]
if last_m != m:
for i in range(last_m-m):
result_list[0].insert(0,0)
# 排队
for i in range(k):
l = len(result_list[i])
col_index = int(l/2+1)-1
result_list[i][col_index] = students_list[0][0]
students_list.pop(0)
left_index = right_index = col_index
while 1:
if left_index > 0:
left_index -= 1
result_list[i][left_index] = students_list[0][0]
students_list.pop(0)
if right_index < l-1:
right_index += 1
result_list[i][right_index] = students_list[0][0]
students_list.pop(0)
else:
break
for i in result_list:
print(' '.join(i))