题目
思路:
先将学生信息按名字升序排序
再将信息按照身高降序排序
生成一个指定行列大小的数组
将学生信息依次填入
代码:
import math
N,K=map(int,input().split())
group={}
for i in range(N):
name,high=input().split()
group[name]=int(high)
group_sort=sorted(group.items(), key=lambda x:x[0] ,reverse=False )
group_sort=sorted(group_sort, key=lambda x:x[1] ,reverse=True )
hang=math.floor(N/K)
last_hang=N-K*hang
print_=[[0 for i in range(hang)] for j in range(K)]
print_[0].extend([0]*last_hang)
for i in range(K):
mid = math.floor(hang / 2 +1)-1
if len(print_[i]) != hang:
mid =math.floor(len(print_[i])/2+1)-1
print_[i][mid] = group_sort[0][0]
group_sort.remove(group_sort[0])
count = 1
a = -1
while(count<len(print_[i])):
print_[i][mid+a]=group_sort[0][0]
count=count+1
group_sort.remove(group_sort[0])
if (count%2!=0 and count>=3):
a=-(abs(a)+1)
else:
a = -a
for i in range(K):
print((' ').join([j for j in print_[i]]))