AT_arc110_c.[ARC110C] Exoswap

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有一个由 1,2,…,N1, 2, \ldots, N 组成的排列数列 P=P1,P2,…,PNP = P_1, P_2, \ldots, P_N。

你需要对 PP 进行以下 N−1N-1 种操作,每种操作恰好各进行一次,顺序可以任意。

  • 交换 P1P_1 和 P2P_2

  • 交换 P2P_2 和 P3P_3

    ⋮\vdots

  • 交换 PN−1P_{N-1} 和 PNP_N

请通过合理安排操作顺序,将 PP 排成升序。如果无法做到,请输出 −1-1。

输入格式

输入通过标准输入给出,格式如下:

NN P1P_1 P2P_2 …\ldots PNP_N

输出格式

如果无论如何都无法将 PP 排成升序,请输出 −1-1。

如果可以将 PP 排成升序,请输出一种操作顺序,共 N−1N-1 行。第 ii 行输出 jj,表示第 ii 次操作是交换 PjP_j 和 Pj+1P_{j+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×1052 \leq N \leq 2 \times 10^5
  • PP 是 1,2,…,N1, 2, \ldots, N 的一个排列

样例解释 1

以下操作顺序可以将 PP 排成升序:

  • 首先交换 P4P_4 和 P5P_5,此时 PP 变为 2,4,1,3,52, 4, 1, 3, 5
  • 接着交换 P2P_2 和 P3P_3,此时 PP 变为 2,1,4,3,52, 1, 4, 3, 5
  • 然后交换 P3P_3 和 P4P_4,此时 PP 变为 2,1,3,4,52, 1, 3, 4, 5
  • 最后交换 P1P_1 和 P2P_2,此时 PP 变为 1,2,3,4,51, 2, 3, 4, 5

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页