题目描述:
小明今年升学到小学一年级,来到新班级后发现其他小朋友们身高参差不齐,然后就想基于各小朋友和自己的身高差对他们进行排序,请帮他实现排序。
输入描述:
第一行为正整数H和N,0<H<200,为小明的身高,0<N<50,为新班级其他小朋友个数。
第二行为N个正整数H1-HN,分别是其他小朋友的身高,取值范围0<Hi<200(1<=i<=N),且N个正整数各不相同。
输出描述:
输出排序结果,各正整数以空格分割。和小明身高差绝对值最小的小朋友排在前面,和小明身高差绝对值最大的小朋友排在最后,如果两个小朋友和小明身高差一样,则个子较小的小朋友排在前面。
示例1:
输入
100 10
95 96 97 98 99 101 102 103 104 105
输出
99 101 98 102 97103 96 104 95 105
import functools
def func():
def compare(x: int, y: int):
i = abs(x - h)
j = abs(y - h)
if i != j:
return i - j
else:
return x - y
while True:
try:
h,n=map(int,input().split())
if 0<h<200 and 0<n<50:
heights = list(map(int,input().split()))
if n ==len(heights):
heights = sorted(heights,key=functools.cmp_to_key(compare))
print(" ".join(list(map(str,heights))))
functools.cmp_to_key(func)
else:
break
else:
break
except ValueError:
break
if __name__ == '__main__':
func()
该问题要求根据小明与其他小朋友的身高差进行排序,差值最小的排在前面,差值相同的按身高小的优先。给定小明的身高H和班级小朋友数量N,以及他们的身高数据,需要输出排序后的身高列表。

4160

被折叠的 条评论
为什么被折叠?



