AT_ttpc2015_i.そーっとソート

通过率:0%

AC君温馨提醒

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

题目描述

给定一个排列 $ a_1, a_2, \ldots, a_n $,其中 nn 是一个 $ (1 \le n \le 50) $ 的整数。你可以进行以下操作最多 10510^5 次:

  • 交换 aia_i 和 aja_j 的值。但是,$ \mid i-j\mid = a_i $ 或者 $ \mid i-j\mid = a_j $ 必须成立。

判断是否可以将数列排序为 $ 1, 2, \ldots, n$,如果可以,请输出一种操作步骤。

输入格式

输入包括以下内容:

  • 第一行:一个整数 nn,表示数列的长度。
  • 第二行:nn 个空格分隔的整数,表示数列的排列 aia_i。保证 aia_i 是 1,2,…,n1, 2, \ldots, n 的一个排列。

输出格式

输出到标准输出。如果无论如何操作,无法在 $ 10^5 $ 次内将数列排序为 $ 1, 2, \ldots, n $,则输出MuriyarokonnNaN。

如果可以排序,按以下格式输出:

  • 第一行:操作次数 RR。
  • 接下来 RR 行:每行两个整数 XiX_i 和 YiY_i,表示第 $ i $ 次操作将 $ a_{X_i} $ 和 $ a_{Y_i} $ 的值交换。

样例 #1

输入

5
4 2 3 1 5

输出

3
2 4
1 2
2 4

样例解释

可以通过上述三次操作将数列排序为 $ 1, 2, 3, 4, 5 $。

输入输出样例

  • 输入#1

    5
    4 2 3 1 5

    输出#1

    3
    2 4
    1 2
    2 4

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

首页