#P6940. [ICPC 2017 WF] Visual Python++
[ICPC 2017 WF] Visual Python++
Description
在最近提出的 Visual Python++ 编程语言中,一个语句块被表示为一个字符矩形,其左上角位于第 行第 列,右下角位于第 行第 列。所有满足 且 的位置 的字符都被认为属于该语句块。在这些位置中,满足 或 或 或 的位置称为边界。
语句块可以嵌套(一个矩形包含在另一个矩形内)到任意深度。在一个语法正确的程序中,任意两个语句块要么是嵌套的(一个包含另一个),要么是不相交的(不重叠)。在这两种情况下,它们的边界都不能重叠。
程序员不需要画出典型程序中的许多矩形——这太耗时了,而且 Visual Python++ 将没有机会成为下一届 ICPC 编程语言。因此,程序员只需要在矩形的左上角放置一个字符 「,在右下角放置一个字符 」。语法分析器将自动匹配相应的角以获取程序的嵌套结构。
你的团队刚刚获得了一份五小时的合同,来开发语法分析器的这一部分。
Input Format
输入的第一行包含一个整数 ,表示角对的数量。
接下来的 行每行包含两个整数 和 ,表示在正在解析的程序中,第 行第 列有一个左上角。
接下来 行,以相同的方式指定右下角。所有角的位置都是不同的。
Output Format
输出 行,每行包含一个整数。第 行的数字 表示第 个左上角与第 个右下角组成一个矩形。左上角和右下角均按照它们在输入中出现的顺序从 到 编号。输出必须是 到 的一个排列,使得匹配后的矩形正确嵌套。如果有多个有效的匹配,输出任何一个均可。如果不存在这样的匹配,则输出 syntax error。
2
4 7
9 8
14 17
19 18
2
1
2
4 7
14 17
9 8
19 18
1
2
2
4 8
9 7
14 18
19 17
syntax error
3
1 1
4 8
8 4
10 6
6 10
10 10
syntax error
Hint
翻译由 DeepSeek R1 完成
京公网安备 11011102002149号