CF1405A.Permutation Forgery

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Permutation Forgery

题目描述

一个长度为 nn 的排列是一个由 11nnnn 个互不相同的整数组成的数组,顺序任意。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是排列(22 在数组中出现了两次),[1,3,4][1,3,4] 也不是排列(n=3n=3 但数组中有 44)。

pp 是任意一个长度为 nn 的排列。我们定义排列 pp 的指纹 F(p)F(p)pp 中相邻元素之和组成的数组,并将其排序。更正式地,

$$F(p) = \mathrm{sort}([p_1+p_2,\, p_2+p_3,\, \ldots,\, p_{n-1}+p_n])。$$

例如,如果 n=4n=4p=[1,4,2,3]p=[1,4,2,3],则指纹为 $F(p)=\mathrm{sort}([1+4,\,4+2,\,2+3])=\mathrm{sort}([5,6,5])=[5,5,6]$。

现在给定一个长度为 nn 的排列 pp,你的任务是找到一个不同的排列 pp',使得 F(p)=F(p)F(p')=F(p)。如果存在某个下标 ii 使得 pipip_i \ne p'_i,则认为 pppp' 不同。

输入格式

每个测试点包含多组测试数据。第一行包含测试组数 tt1t6681 \le t \le 668)。接下来是每组测试数据的描述。

每组测试数据的第一行包含一个整数 nn2n1002 \le n \le 100),表示排列的长度。

第二行包含 nn 个整数 p1,,pnp_1, \ldots, p_n1pin1 \le p_i \le n)。保证 pp 是一个排列。

输出格式

对于每组测试数据,输出 nn 个整数 p1,,pnp'_1, \ldots, p'_n,表示一个满足 ppp' \ne pF(p)=F(p)F(p')=F(p) 的排列。

可以证明,对于每个满足输入约束的排列,解一定存在。

如果有多组解,输出任意一组均可。

说明/提示

在第一个测试用例中,F(p)=sort([1+2])=[3]F(p)=\mathrm{sort}([1+2])=[3]

F(p)=sort([2+1])=[3]F(p')=\mathrm{sort}([2+1])=[3]

在第二个测试用例中,$F(p)=\mathrm{sort}([2+1,\,1+6,\,6+5,\,5+4,\,4+3])=\mathrm{sort}([3,7,11,9,7])=[3,7,7,9,11]$。

而 $F(p')=\mathrm{sort}([1+2,\,2+5,\,5+6,\,6+3,\,3+4])=\mathrm{sort}([3,7,11,9,7])=[3,7,7,9,11]$。

在第三个测试用例中,$F(p)=\mathrm{sort}([2+4,\,4+3,\,3+1,\,1+5])=\mathrm{sort}([6,7,4,6])=[4,6,6,7]$。

而 $F(p')=\mathrm{sort}([3+1,\,1+5,\,5+2,\,2+4])=\mathrm{sort}([4,6,7,6])=[4,6,6,7]$。

由 ChatGPT 4.1 翻译

样例

3
2
1 2
6
2 1 6 5 4 3
5
2 4 3 1 5
2 1
1 2 5 6 3 4
3 1 5 2 4

在线编程 IDE

建议全屏模式获得最佳体验