有同学用优先级队列/最大堆做,其实不用那么麻烦。
将点按照x坐标从大到小排序并遍历,那么实际上就可以无视X坐标,只关心Y坐标就行。
换句话说:只需要知道之前遍历的点的最大Y值是多少即可
n=int(input())
points=[ [int(x) for x in input().split()] for i in range(n)]
points.sort(key=lambda x:-x[0])
ans=[]
top=points[0][1]
for p in points:
if top>p[1]:
continue
top=p[1]
ans.append(p)
#ans.sort(key=lambda x:x[0])
for i in range(len(ans)):
p=ans[len(ans)-1-i]
print(p[0],p[1])


京公网安备 11010502036488号