CF1101C Division and Union
题目描述
有 $n$ 个线段 $[l_i, r_i]$,其中 $1 \le i \le n$。你需要将所有线段分成两个非空组,使得不存在一对来自不同组的线段有至少一个公共点,或者说明无法做到。每个线段必须且只能属于一个组。
为了优化测试过程,给你多组测试数据。
输入格式
第一行包含一个整数 $T$($1 \le T \le 50000$),表示查询的组数。每组查询描述一组线段。各组查询相互独立。
每组查询的第一行包含一个整数 $n$($2 \le n \le 10^5$),表示线段的数量。保证所有查询中 $\sum n \le 10^5$。
接下来的 $n$ 行,每行包含两个整数 $l_i$、$r_i$($1 \le l_i \le r_i \le 2 \cdot 10^5$),表示第 $i$ 个线段。
输出格式
对于每组查询,输出 $n$ 个整数 $t_1, t_2, \dots, t_n$($t_i \in \{1, 2\}$),表示每个线段(顺序与输入一致)属于第一个组($t_i=1$)还是第二个组($t_i=2$)。
如果有多种答案,可以输出任意一种。如果无法分组,输出 $-1$。
说明/提示
在第一个查询中,第一条和第二条线段应分在不同的组,但具体编号无关紧要。
在第二个查询中,第三条线段与第一、第二条线段都有交集,因此它们应在同一组,但这样另一组就为空,所以答案为 $-1$。
在第三个查询中,可以任意分配线段,只要两组都非空即可,因此任意一种 $6$ 种答案都是正确的。
由 ChatGPT 4.1 翻译