#P13023. [GCJ 2021 Qualification] Reversort Engineering

    ID: 12837 远端评测题 10000ms 1024MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>贪心2021Special JudgeGoogle Code Jam

[GCJ 2021 Qualification] Reversort Engineering

Description

注意:问题 "Reversort" 和 "Reversort Engineering" 的题目描述主体部分相同,仅最后一段不同。这两个问题可以独立解决。

Reversort 是一种用于将互不相同的整数列表按升序排序的算法。该算法基于 "Reverse" 操作,每次应用该操作会反转列表中某个连续部分的顺序。

算法的伪代码如下:

Reversort(L):
  for i := 1 to length(L) - 1
    j := position with the minimum value in L between i and length(L), inclusive
    Reverse(L[i..j])

经过 i1i - 1 次迭代后,列表的第 11, 22, \ldots, i1i - 1 个位置将包含 LL 中前 i1i - 1 小的元素,并按升序排列。在第 ii 次迭代中,算法会反转从第 ii 个位置到当前第 ii 小元素所在位置的子列表。这将使第 ii 小的元素最终位于第 ii 个位置。

例如,对于一个包含 44 个元素的列表,算法将执行 33 次迭代。以下是处理 L=[4,2,1,3]L = [4, 2, 1, 3] 的过程:

  1. i=1i = 1, j=3L=[1,2,4,3]j = 3 \longrightarrow L = [1, 2, 4, 3]
  2. i=2i = 2, j=2L=[1,2,4,3]j = 2 \longrightarrow L = [1, 2, 4, 3]
  3. i=3i = 3, j=4L=[1,2,3,4]j = 4 \longrightarrow L = [1, 2, 3, 4]

在我们的架构中,执行该算法最耗时的部分是 Reverse 操作。因此,我们衡量每次迭代成本的标准仅仅是传递给 Reverse 的子列表长度,即 ji+1j - i + 1。整个算法的成本是每次迭代成本的总和。

在上述示例中,迭代成本依次为 331122,总成本为 66

现在给定列表大小 NN 和目标成本 CC。请找出一个由 11NNNN 个不同整数组成的列表,使得对其应用 Reversort 的成本恰好为 CC,或者判定这样的列表不存在。

Input Format

输入的第一行给出测试用例的数量 T\mathbf{T}。接下来是 T\mathbf{T} 行。每行描述一个测试用例,包含两个整数 N\mathbf{N}C\mathbf{C},分别表示目标列表的大小和期望成本。

Output Format

对于每个测试用例,如果不存在大小为 N\mathbf{N} 且应用 Reversort 后成本恰好为 C\mathbf{C} 的列表,则输出一行 Case #xx: IMPOSSIBLE,其中 xx 是测试用例编号(从 1 开始)。否则,输出一行 Case #xx: y1y_1 y2y_2 \ldots yNy_{\mathbf{N}},其中 xx 是测试用例编号(从 1 开始),每个 yiy_i11N\mathbf{N} 之间的不同整数,表示一个可能列表的第 ii 个元素。

如果存在多个解,可以输出其中任意一个。

5
4 6
2 1
7 12
7 2
2 1000
Case #1: 4 2 1 3
Case #2: 1 2
Case #3: 7 6 5 4 3 2 1
Case #4: IMPOSSIBLE
Case #5: IMPOSSIBLE

Hint

样例解释

样例 #1 已在题目描述中说明。

在样例 #2 中,算法在所提出的输出上仅运行一次迭代。在该次迭代中,reverse 操作应用于长度为 1 的子列表,因此其成本为 1。

在样例 #3 中,第一次迭代反转了整个列表,成本为 7。此后列表已排序,但仍有 5 次迭代,每次成本为 1。另一个有效输出是 7 5 4 3 2 1 6。对于该输出,第一次迭代的成本为 6,最后一次的成本为 2,其余每次的成本为 1。

在样例 #4 中,Reversort 必然执行 6 次迭代,每次迭代的成本至少为 1,因此无法达到要求的低总成本。

数据范围

  • 1T1001 \leq \mathbf{T} \leq 100
  • 1C10001 \leq \mathbf{C} \leq 1000

测试集 1(7 分,可见判定结果)

  • 2N72 \leq \mathbf{N} \leq 7

测试集 2(11 分,可见判定结果)

  • 2N1002 \leq \mathbf{N} \leq 100

翻译由 DeepSeek V3 完成