P6940 [ICPC 2017 WF] Visual Python++
题目描述
# 题意
有 $n$ 个矩形,每个矩形左上角为 $(r_1,c_1)$ ,右下角为 $(r_2,c_2)$。
矩形可以嵌套(矩形包含在其他矩形中)任意层。在合法的情况下,任意两个矩形要么是嵌套的(一个包含在另一个中),要么是不交的(不重叠)。在这两种情况中,他们的 **边界也不能重叠**。
输入格式
第一行包含一个整数 $n(1\leq n \leq 10^5)$ ,表示矩形的数量。
接下来 $n$ 行,每行两个整数 $r$ 和 $c(1\leq r,c\leq 10^9)$ ,指定 $(r,c)$ 为第 $i$ 个左上角坐标。
接下来 $n$ 行,每行两个整数 $r$ 和 $c(1\leq r,c\leq 10^9)$ ,指定 $(r,c)$ 为第 $j$ 个右下角坐标。
所有给定坐标互不相同。
输出格式
输出 $n$ 行,每行包含一个整数。第 $i$ 行整数 $j$ 表示第 $i$ 个左上角和第 $j$ 个右下角组成一个矩形。左上角和右下角均按照他们在输入中的顺序从 $1$ 到 $n$ 标号。输出必须是 $1$ 到 $n$ 的排列,从而匹配可能嵌套的矩形。如果存在超过一种合法的匹配,任意一组合法的匹配都是可接受的。如果不存在合法的匹配,输出 `syntax error`。
说明/提示
Time limit: 5 s, Memory limit: 512 MB.