题目描述
给定一个排列 P=(P1,P2,ldots,PN),其中 P 是 (1,2,ldots,N) 的一个排列。
判断是否可以通过最多进行 2times103 次以下操作之一来重新排列 P,如果可能的话,请展示一种操作序列。
- 选择整数 i 和 j,满足 1leqi≤N−1,0≤j≤N−2。令 Q=(Q1,Q2,ldots,QN−2) 为从 P 中删除 (Pi,Pi+1) 后得到的序列。用 $(Q_1,\\ldots,Q_j, P_i, P_{i+1}, Q_{j+1},\\ldots,Q_{N-2})$ 替换 P。
约束条件
- 2leqNleq103
- P 是 (1,2,ldots,N) 的一个排列。
- 所有输入值都是整数。
输入
从标准输入读取输入,其格式如下:
N
P1 P2 ldots PN
输出
如果在 2times103 次操作内无法将 P 重新排列成升序,则输出 No
。如果可以将 P 重新排列成升序,令 M(0leqMleq2times103) 为操作次数,令 ik,jk 为第 k 次操作 (1leqkleqM) 的选取的 i 和 j,并按以下格式输出:
Yes
M
i1 j1
i2 j2
vdots
iM jM
如果有多个解,任意一个都会被视为正确。
示例输入 1
5
1 4 2 3 5
示例输出 1
Yes
1
3 1
执行操作 i=3,j=1。
然后 Q=(P1,P2,P5)=(1,4,5),因此得到 P=(Q1,P3,P4,Q2,Q3)=(1,2,3,4,5)。
因此,可以通过一次操作将 P 重新排列成升序。
示例输入 2
2
2 1
示例输出 2
No
可以证明,无法在 2times103 次操作内将 P 重新排列成升序。
示例输入 3
4
3 4 1 2
示例输出 3
Yes
3
3 0
1 2
3 0
不需要最小化操作次数。