Universal Cup Judging System

Universal Cup

実行時間制限: 3.0 s メモリ制限: 256 MB 満点: 100
統計

Blackwater Industries 计划在半人马座 $\alpha$ A 星系的森林卫星潘多拉上建造一个太空殖民地,并聘请你提供帮助。

该殖民地将由 $n$ 个高度为正整数的穹顶组成。这 $n$ 个穹顶将排成一个序列,我们从左到右将位置标记为 $1$ 到 $n$。利用虫洞技术的最新进展,可以在任意两个现有穹顶之间插入一个新穹顶,即使它们之间没有可用空间!当然,也可以在第一个穹顶之前或最后一个穹顶之后插入新穹顶。

太空殖民地将从一个空序列开始,分 $n$ 个步骤建造。第 $i$ 步由两个整数 $(p_i, h_i)$ 描述,其含义如下:

  • 插入一个高度为 $h_i$ 的新穹顶,使得插入后该穹顶位于位置 $p_i$。

更正式地说,在第 $i$ 步之前,序列中恰好有 $i-1$ 个穹顶,第 $i$ 次操作 $(p_i, h_i)$ 必须满足 $1 \le p_i \le i$。此时第 $i$ 次操作的含义为:

  • 如果 $p_i = 1$,则在所有现有穹顶之前插入一个高度为 $h_i$ 的新穹顶。
  • 如果 $p_i = i$,则在所有现有穹顶之后插入一个高度为 $h_i$ 的新穹顶。
  • 如果 $1 < p_i < i$,则在位置 $p_i-1$ 和 $p_i$ 的穹顶之间插入一个高度为 $h_i$ 的新穹顶。

因此,在第 $i$ 步之后,序列中恰好有 $i$ 个穹顶。

对于一个包含 $2n$ 个数字的序列 $S = [p_1, h_1, p_2, h_2, \dots, p_n, h_n]$,定义 $C(S)$ 为执行操作序列 $(p_1, h_1), (p_2, h_2), \dots, (p_n, h_n)$ 后穹顶的高度序列。因此,$C(S)$ 是一个包含 $n$ 个数字的序列。

Blackwater Industries 已经起草了一份初步计划。他们的目标是建造一个穹顶高度等于 $C(P)$ 的太空殖民地,其中 $P$ 是作为输入给出的 $2n$ 个数字的序列。然而,他们很吝啬,所以他们想以更低的成本建造同一个太空殖民地!

在太空旅行时代,成本的衡量方式有所不同。对于给定的两个长度为 $2n$ 的序列 $P$ 和 $Q$,成本较低的序列是字典序较小的那个。

什么是产生与 $P$ 相同的太空殖民地的最廉价的 $Q$?换句话说,满足 $C(P) = C(Q)$ 的字典序最小的 $2n$ 个数字的序列 $Q$ 是什么?

说明:设 $A$ 和 $B$ 为两个不同的序列。当且仅当满足以下至少一个条件时,$A$ 的字典序小于 $B$:

  • $A$ 是 $B$ 的前缀;
  • $A$ 不是 $B$ 的前缀,且在第一个不同的位置 $i$ 上,$A_i < B_i$。

输入格式

输入的第一行包含一个整数 $t$,表示测试用例的数量。接下来是 $t$ 个测试用例的描述。

每个测试用例包含多行输入。第一行包含整数 $n$。接下来 $n$ 行,其中第 $i$ 行包含两个空格分隔的整数 $p_i$ 和 $h_i$。序列 $P$ 定义为 $[p_1, h_1, p_2, h_2, \dots, p_n, h_n]$。

  • $1 \le t \le 1000$
  • $1 \le n \le 500000$
  • 单个测试文件中所有 $n$ 的总和不超过 $500000$
  • $1 \le p_i \le i$
  • $1 \le h_i \le n$

输出格式

对于每个测试用例,输出 $n$ 行,其中第 $i$ 行包含两个空格分隔的整数 $P_i$ 和 $H_i$。定义的序列 $Q = [P_1, H_1, P_2, H_2, \dots, P_n, H_n]$ 必须是满足 $C(P) = C(Q)$ 的字典序最小的序列。

样例

输入 1

1
3
1 1
2 2
1 3

输出 1

1 1
1 3
3 2

说明

输出中的序列 $P = [1, 1, 2, 2, 1, 3]$ 对应于 3 次操作 $(1, 1), (2, 2), (1, 3)$,产生以下高度序列:

  • 初始时,序列为 [](空)。
  • 执行 $(1, 1)$ 后,高度为 [1]。
  • 执行 $(2, 2)$ 后,高度为 [1, 2]。
  • 执行 $(1, 3)$ 后,高度为 [3, 1, 2]。

因此,$C(P) = [3, 1, 2]$。

输出中的序列 $Q = [1, 1, 1, 3, 3, 2]$ 对应于 3 次操作 $(1, 1), (1, 3), (3, 2)$,产生以下高度序列:

  • 初始时,序列为 [](空)。
  • 执行 $(1, 1)$ 后,高度为 [1]。
  • 执行 $(1, 3)$ 后,高度为 [3, 1]。
  • 执行 $(3, 2)$ 后,高度为 [3, 1, 2]。

因此,$C(Q) = [3, 1, 2]$,且我们有 $C(P) = C(Q)$。此外,可以证明 $[1, 1, 1, 3, 3, 2]$ 是满足条件的字典序最小的序列。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.