#P7013. [CERC2013] History course

[CERC2013] History course

Description

你需要按某种顺序为一系列重要历史事件安排讲座,每个讲座对应一个事件。每个事件持续一段时间区间 [ai,bi][a_i, b_i]。如果两个事件的时间区间有公共点,则称这两个事件是相关的。为了方便起见,安排相关事件的讲座时应尽量靠近。此外,对于不相关的事件,讲座应按照事件发生的顺序进行(如果事件 A 先于不相关事件 BB 发生,那么 A 的讲座应先于 B 的讲座)。找到最小的整数 k0k \ge 0 和一个讲座顺序,使得任何两个相关事件的讲座之间的间隔最多为 kk(讲座编号 iijj 之间的间隔被认为是 ij|i−j|)。

Input Format

输入的第一行包含测试用例的数量 tt。每个测试用例的描述如下:每个测试用例的第一行包含一个整数 n(1n50000)n (1 \le n \le 50000)。接下来的 nn 行中的每一行包含两个整数 aia_ibi(109aibi109)b_i (-10^9 \le a_i \le b_i \le 10^9),表示第 ii 个区间的两个端点。所有区间是两两不同的。

Output Format

按输入中出现的顺序输出每个测试用例的答案。每个测试用例答案的第一行应包含最小值 kk。接下来的 nn 行应按顺序列出区间(格式与输入相同),使得任何两个相关事件的讲座之间的间隔最多为 kk。记得将任何不相关的区间按正确的顺序排列!

1
3
1 6
2 3
4 5

1
2 3
1 6
4 5

Hint

时间限制:10 秒,内存限制:128 MB。感谢 hht2006 提供的 Special Judge。

题面翻译由 ChatGPT-4o 提供。