def main():
n = int(input())
employees = []
for _ in range(n):
Id, Score = map(int, input().split())
employees.append((Id, Score))
# 按分数排序
employees.sort(key=lambda x: x[1])
min_diff = float("inf")
result = []
# 找出最小分数差及其对应的员工对
for i in range(n - 1):
cur_diff = employees[i + 1][1] - employees[i][1]
if cur_diff < min_diff:
min_diff = cur_diff
result = [(employees[i], employees[i + 1])]
elif cur_diff == min_diff:
result.append((employees[i], employees[i + 1]))
# 对结果进行排序,确保按ID升序排列
result.sort(key=lambda pair: (min(pair[0][0], pair[1][0]), max(pair[0][0], pair[1][0])))
# 输出最小分数差及其对应的员工对
for pair in result:
print(f"{pair[0][0]} {pair[1][0]}")
if __name__ == "__main__":
main()
代码说明:
输入和排序:读取员工ID和分数,并按分数排序。
查找最小分数差:
遍历员工,计算相邻员工之间的分数差。
如果当前分数差小于已知的最小分数差,则更新最小分数差并重置结果列表。
如果当前分数差等于最小分数差,则将这一对添加到结果列表中。
输出所有具有该最小分数差的员工对,确保员工ID按升序排列。