#P12948. [GCJ Farewell Round #1] Rainbow Sort

[GCJ Farewell Round #1] Rainbow Sort

Description

你的朋友 Charles 给你出了一个挑战。他在桌上排列了 N\mathbf{N} 张卡片,并按他选择的顺序排成一条直线。每张卡片有一种颜色,同一种颜色可能出现在多张卡片上。

Charles 要求你在不改变他原有排列顺序的前提下,为每张卡片写上一个正整数,满足以下条件:

  1. 当从左到右阅读卡片时,卡片上的数字必须是非递减的。
  2. 相同颜色的卡片必须写上相同的数字。
  3. 不同颜色的卡片必须写上不同的数字。

最后,Charles 希望你按照数字从小到大的顺序排列这些颜色。例如,如果蓝色卡片写的是 2,红色卡片写的是 5,绿色卡片写的是 3,那么颜色顺序应为蓝色、绿色、红色。

Input Format

输入的第一行给出测试用例的数量 T\mathbf{T}。随后是 T\mathbf{T} 个测试用例。

每个测试用例的第一行包含一个整数 N\mathbf{N}。接下来一行包含 N\mathbf{N} 个整数 $\mathbf{S}_1, \mathbf{S}_2, \ldots, \mathbf{S}_\mathbf{N}$,其中 Si\mathbf{S}_i 表示从左数第 ii 张卡片的颜色。

Output Format

对于每个测试用例,输出一行 Case #x: y,其中 xx 是测试用例编号(从 1 开始),yy 是按要求顺序排列的颜色集合(每个颜色仅出现一次)。如果无法在满足所有规则的情况下为卡片写上数字,则 yy 应为 IMPOSSIBLE

2
4
3 8 8 2
5
3 8 2 2 8
Case #1: 3 8 2
Case #2: IMPOSSIBLE

Hint

样例解释

在样例 #1 中,4 张卡片共有 3 种不同颜色。一种可行的解决方案是按顺序写上以下数字:1、2、2、3。注意颜色为 8 的两张卡片都写上了相同的数字 2。因此,颜色的顺序为 3、8、2。

在样例 #2 中,设 c8c_8c2c_2 分别为颜色 8 和 2 的卡片上写的数字。如果 c2>c8c_2 > c_8,那么最右侧的两张卡片上的数字将不是非递减的;如果 c2<c8c_2 < c_8,则左侧第二和第三张卡片会出现同样的问题;而 c8=c2c_8 = c_2 又违反了规则之一。因此,这种情况下没有有效的解决方案。

数据范围

  • 1T1001 \leq \mathbf{T} \leq 100
  • 对于所有 ii1Si1051 \leq \mathbf{S}_{i} \leq 10^{5}

测试集 1(4 分,可见判定)

  • 1N101 \leq \mathbf{N} \leq 10

测试集 2(10 分,可见判定)

  • 1N1051 \leq \mathbf{N} \leq 10^{5}

翻译由 DeepSeek V3 完成