传统题 2000ms 1024MiB

[ABC350C] Sort

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

AT_abc350_c [ABC350C] Sort

题目描述

给定一个是 (1,2,,N) (1,2,\ldots,N) 的排列的数列 A=(A1,,AN) A=(A_1,\ldots,A_N)
你可以进行 0 0 次到 N1 N-1 次操作,将 A A 变为 (1,2,,N) (1,2,\ldots,N)

  • 操作:可以自由选择满足 1i<jN 1\leq i < j \leq N 的整数对 (i,j) (i,j) ,交换 A A 的第 i i 个和第 j j 个元素。

在题目给定的限制条件下,总是可以将 A A 变为 (1,2,,N) (1,2,\ldots,N) ,这一点可以得到证明。

输入格式

输入从标准输入按以下格式给出。

N N A1 A_1 \ldots AN A_N

输出格式

设操作次数为 K K ,请输出 K+1 K+1 行。
1 1 行输出 K K
l+1 l+1 行(1lK 1\leq l \leq K )输出第 l l 次操作选择的整数 i,j i,j ,用空格隔开。
只要满足题目条件,任意一种输出都被视为正确答案。

样例 1

输入

5
3 4 1 2 5

输出

2
1 3
2 4

样例 2

输入

4
1 2 3 4

输出

0

样例 3

输入

3
3 1 2

输出

2
1 2
2 3

说明/提示

限制条件

  • 2N2×105 2 \leq N \leq 2\times 10^5
  • (A1,,AN) (A_1,\ldots,A_N) (1,2,,N) (1,2,\ldots,N) 的一个排列
  • 输入均为整数

样例解释 1

通过操作,数列会如下变化:

  • 初始时 A=(3,4,1,2,5) A=(3,4,1,2,5)
  • 第 1 次操作交换第 1 个和第 3 个元素,A=(1,4,3,2,5) A=(1,4,3,2,5)
  • 第 2 次操作交换第 2 个和第 4 个元素,A=(1,2,3,4,5) A=(1,2,3,4,5)

除此之外,以下输出也是正确答案:

4
2 3
3 4
1 2
2 3

由 ChatGPT 4.1 翻译

Kevin VP ABC350

未参加
状态
已结束
规则
XCPC
题目
7
开始于
2026-1-5 18:00
结束于
2026-1-5 19:40
持续时间
1.7 小时
主持人
参赛人数
2