#CF2200D. Portal

    ID: 7037 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>贪心排序CodeforcesCodeforces Round 1084(Div3)Div3DCF2200D1300

Portal

题目描述

给你一个长度为 nn 的排列 pp。在位置 xxyyx<yx < y)各有一个传送门。

位置 ii 的传送门最初位于数组第 ii 个和第 (i+1)(i+1) 个元素之间。特别地,如果 i=0i=0,传送门位于第一个元素之前;如果 i=ni=n,传送门位于最后一个元素之后。

你可以无限次执行以下两种操作中的一种:

  1. 将某个传送门左侧紧邻的元素移除,并将其插入到另一个传送门右侧紧邻处。
  2. 将某个传送门右侧紧邻的元素移除,并将其插入到另一个传送门左侧紧邻处。

O\mathbf{\color{red}{\mathcal{O}}} 表示传送门。例如,若 $p = [3,\mathbf{\color{red}{\mathcal{O}}},2,4,\mathbf{\color{red}{\mathcal{O}}},1]$:

  • 分别在左、右传送门使用操作 1,得到数组 $[\mathbf{\color{red}{\mathcal{O}}},2,4,\mathbf{\color{red}{\mathcal{O}}},3,1]$ 和 $[3,\mathbf{\color{red}{\mathcal{O}}},4,2,\mathbf{\color{red}{\mathcal{O}}},1]$。
  • 分别在左、右传送门使用操作 2,得到数组 $[3,\mathbf{\color{red}{\mathcal{O}}},4,2,\mathbf{\color{red}{\mathcal{O}}},1]$ 和 $[3,1,\mathbf{\color{red}{\mathcal{O}}},2,4,\mathbf{\color{red}{\mathcal{O}}}]$。

请找出你能够通过这些操作得到的排列中字典序最小的一个。注意,传送门在字典序比较中没有影响。

^{\text{∗}} 长度为 nn 的排列是一个长度为 nn 的数组,包含 11nn 的每个整数各一次。

^{\text{†}} 如果存在下标 ii 使得对于所有 1j<i1 \leq j < i 都有 aj=bja_j = b_j,且 ai<bia_i < b_i,则排列 aa 字典序小于排列 bb

输入格式

第一行包含一个整数 tt1t21041 \leq t \leq 2\cdot 10^4),表示测试用例个数。

每个测试用例的第一行包含三个整数 nnxxyy1n21051 \leq n \leq 2 \cdot 10^50x<yn0 \leq x < y \leq n)。

每个测试用例的第二行包含 nn 个整数 p1,p2,,pnp_1, p_2, \dots, p_n,表示一个长度为 nn 的排列。

所有测试用例中的 nn 之和不超过 21052 \cdot 10^5

输出格式

对于每个测试用例,输出一行 nn 个整数,表示你可以得到的字典序最小的排列。

样例

4
4 0 4
3 1 4 2
3 1 2
3 2 1
5 1 3
1 3 5 2 4
2 0 1
1 2
1 4 2 3
2 3 1
1 2 3 5 4
1 2

样例说明

O\mathbf{\color{red}{\mathcal{O}}} 表示传送门。

在第一个测试用例中,数组为 $[\mathbf{\color{red}{\mathcal{O}}},3,1,4,2,\mathbf{\color{red}{\mathcal{O}}}]$。在左侧传送门使用操作 2 得到 $[\mathbf{\color{red}{\mathcal{O}}},1,4,2,3,\mathbf{\color{red}{\mathcal{O}}}]$,这是能得到的字典序最小的排列。

上述为描述中的操作动画。

在第二个测试用例中,数组为 $[3,\mathbf{\color{red}{\mathcal{O}}},2,\mathbf{\color{red}{\mathcal{O}}},1]$,在左侧传送门使用操作 1 得到 $[\mathbf{\color{red}{\mathcal{O}}},2,\mathbf{\color{red}{\mathcal{O}}},3,1]$,这是能得到的字典序最小的排列。

在第四个测试用例中,最优方案是不进行任何操作。

由 ChatGPT 5 翻译

来源

Codeforces 2200D,英文题名 Portal。