AT_arc110_c.[ARC110C] Exoswap
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有一个由 1,2,…,N 组成的排列数列 P=P1,P2,…,PN。
你需要对 P 进行以下 N−1 种操作,每种操作恰好各进行一次,顺序可以任意。
-
交换 P1 和 P2
-
交换 P2 和 P3
⋮
-
交换 PN−1 和 PN
请通过合理安排操作顺序,将 P 排成升序。如果无法做到,请输出 −1。
输入格式
输入通过标准输入给出,格式如下:
N P1 P2 … PN
输出格式
如果无论如何都无法将 P 排成升序,请输出 −1。
如果可以将 P 排成升序,请输出一种操作顺序,共 N−1 行。第 i 行输出 j,表示第 i 次操作是交换 Pj 和 Pj+1。
如果存在多种可行的操作顺序,输出任意一种均可。
输入输出样例
输入#1
5 2 4 1 5 3
输出#1
4 2 3 1
输入#2
5 5 4 3 2 1
输出#2
-1
说明/提示
限制条件
- 输入均为整数
- 2≤N≤2×105
- P 是 1,2,…,N 的一个排列
样例解释 1
以下操作顺序可以将 P 排成升序:
- 首先交换 P4 和 P5,此时 P 变为 2,4,1,3,5
- 接着交换 P2 和 P3,此时 P 变为 2,1,4,3,5
- 然后交换 P3 和 P4,此时 P 变为 2,1,3,4,5
- 最后交换 P1 和 P2,此时 P 变为 1,2,3,4,5
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?