#P6940. [ICPC 2017 WF] Visual Python++

[ICPC 2017 WF] Visual Python++

Description

在最近提出的 Visual Python++ 编程语言中,一个语句块被表示为一个字符矩形,其左上角位于第 r1r_{1} 行第 c1c_{1} 列,右下角位于第 r2r_{2} 行第 c2c_{2} 列。所有满足 r1rr2r_{1} \le r \le r_{2}c1cc2c_{1} \le c \le c_{2} 的位置 (r,c)(r , c) 的字符都被认为属于该语句块。在这些位置中,满足 r=r1r = r_{1}r=r2r = r_{2}c=c1c = c_{1}c=c2c = c_{2} 的位置称为边界。

语句块可以嵌套(一个矩形包含在另一个矩形内)到任意深度。在一个语法正确的程序中,任意两个语句块要么是嵌套的(一个包含另一个),要么是不相交的(不重叠)。在这两种情况下,它们的边界都不能重叠。

程序员不需要画出典型程序中的许多矩形——这太耗时了,而且 Visual Python++ 将没有机会成为下一届 ICPC 编程语言。因此,程序员只需要在矩形的左上角放置一个字符 ,在右下角放置一个字符 。语法分析器将自动匹配相应的角以获取程序的嵌套结构。

你的团队刚刚获得了一份五小时的合同,来开发语法分析器的这一部分。

Input Format

输入的第一行包含一个整数 n(1n105)n (1 \le n \le 10^{5}),表示角对的数量。

接下来的 nn 行每行包含两个整数 rrc(1r,c109)c (1 \le r , c \le 10^{9}),表示在正在解析的程序中,第 rr 行第 cc 列有一个左上角。

接下来 nn 行,以相同的方式指定右下角。所有角的位置都是不同的。

Output Format

输出 nn 行,每行包含一个整数。第 ii 行的数字 jj 表示第 ii 个左上角与第 jj 个右下角组成一个矩形。左上角和右下角均按照它们在输入中出现的顺序从 11nn 编号。输出必须是 11nn 的一个排列,使得匹配后的矩形正确嵌套。如果有多个有效的匹配,输出任何一个均可。如果不存在这样的匹配,则输出 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 完成