n, m = map(int, input().split())
t = int(1.5 * m)
arr = [list(map(int, input().split())) for _ in range(n)]
arr.sort(key=lambda x: (-x[1], x[0]))
line = arr[t-1][1]
result = [x for x in arr if x[1] >= line]
print(line, len(result))
for item in result:
print(*item)
这题和字符统计有点像,首先用类似array的结构把k,s收集起来,然后用匿名函数同时按分数s降序和报名号k升序,从已排序的列表中使用给定的第t名找到对应的分数,这里注意由于python计数是从0开始的而自然计数第t位是从1开始的,所以索引需要-1,找到这个t对应的k, s中的s. 最后筛选比分数线高的选手,我本来的思路是既然已经排序了就直接用t来截取, 这样是不对的,因为会有未知人数和t同分,都要算进来。最后不要忘记输出中要求开头要写上分数线和进入面试的人数(不是t!)。

京公网安备 11010502036488号