题号:NC231614
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld
题目描述
作为一个即将开始考研的废物点心,

在退役之后已经着手准备了!
为了考上梦想的**枝江大学**,

已经制定了未来

的考研计划,他在每一张纸上都写下他第几天该做些什么,一共写下了

张纸(n是一个偶数),每一张纸都有一个编号

,编号表示第

天的计划,刚开始所有计划的编号都是升序的。

觉得只要按照顺序完成写下的计划,就能成为一名

。
可是嗷子总想带着

找准进厂时机,于是嗷子将

的计划全部打乱,并且对

说:

子啊,我们一起进厂吧。

不想理会嗷子,只想快点整理好自己的考研计划开始预习...
嗷子看到

心中如此坚定,于是便开始拷打他,如果

能够满足嗷子的条件,

便可以继续考研。

每次可以将两张考研计划进行交换,倘若每次交换的考研计划在当前计划序列中的**位置(注意是计划的当前位置,不是计划的编号)**,满足

,则

可以不付出任何代价;否则

需要付出1的代价。
嗷子需要

用最小的代价让他自己的考研计划的编号序列,恢复成为初始的样子,即恢复成升序。
输入描述:
第一行包含一个整数
,为
的
张考研计划。)
第二行包含
个数,
表示打乱后计划编号序列。
为打乱后在位置
的考研计划的编号,)
输出描述:
第一行包含一个整数
,表示将考研计划编号变为升序的最小花费。
第二行包换一个整数
,表示你需要进行交换的操作次数。)
接下来
行包含两个整数
,表示交换位置为
的两个计划,即交换
。)
示例1
输出
复制
0
10
1 5
2 6
1 4
1 6
2 6
1 4
3 6
6 1
4 1
6 1
说明
Hint:注意输入输出对时限的影响,建议用scanf和printf输入输出
对于样例1
第5天的计划在位置1,第6天的计划在位置2...第3天的计划在位置6。
交换位置为1和5的计划,计划序列变为1 6 4 2 5 3
交换位置为2和6的计划,计划序列变为1 3 4 2 5 6
交换位置为1和4的计划,计划序列变为2 3 4 1 5 6
交换位置为1和6的计划,计划序列变为6 3 4 1 5 2
交换位置为2和6的计划,计划序列变为6 2 4 1 5 3
交换位置为1和4的计划,计划序列变为1 2 4 6 5 3
...
此样例每一次交换都不需要符出代价。