b_zj_最大点集(排序+小思维)

定义P中某点x,如果x满足P中任意点都不在x的右上方区域内,则称其为最大点。求出所有“最大的”点的集合。

思路:先约束好一维,在对另一位进行判断即可

def solve():
    n=int(input())
    A,ans=[],[]
    for i in range(n):
        x,y=map(int,input().split())
        A.append((x,y))
    maxy=-1
    A.sort(key=lambda point: point[0], reverse=True) #先按x轴降序排序
    for p in A:
        if maxy==-1 or p[1]>maxy:
            ans.append(p)
            maxy=p[1]
    ans.sort(key=lambda p: p[0])
    for p in ans:
        print(p[0], p[1])
solve()
posted @ 2020-12-18 11:50  童年の波鞋  阅读(91)  评论(0编辑  收藏  举报