AT_ttpc2015_i.そーっとソート
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个排列 $ a_1, a_2, \ldots, a_n $,其中 n 是一个 $ (1 \le n \le 50) $ 的整数。你可以进行以下操作最多 105 次:
- 交换 ai 和 aj 的值。但是,$ \mid i-j\mid = a_i $ 或者 $ \mid i-j\mid = a_j $ 必须成立。
判断是否可以将数列排序为 $ 1, 2, \ldots, n$,如果可以,请输出一种操作步骤。
输入格式
输入包括以下内容:
- 第一行:一个整数 n,表示数列的长度。
- 第二行:n 个空格分隔的整数,表示数列的排列 ai。保证 ai 是 1,2,…,n 的一个排列。
输出格式
输出到标准输出。如果无论如何操作,无法在 $ 10^5 $ 次内将数列排序为 $ 1, 2, \ldots, n $,则输出MuriyarokonnNaN。
如果可以排序,按以下格式输出:
- 第一行:操作次数 R。
- 接下来 R 行:每行两个整数 Xi 和 Yi,表示第 $ 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测评打分。不知道怎么写?