#P1019. 飞碟(ufo)
飞碟(ufo)
【题目描述】
小 是来自半人马座的外星人。
他有 台飞碟,从 到 编号,这 台飞碟停在 个位置上,每个位置也从 到 编号。现在每一个位置恰好停着一台飞碟,对于所有 ,在第 个位置上停放的飞碟编号为 。
由于飞碟摆放的位置杂乱无章,于是小 想要通过一些操作让这些飞碟摆放的位置变得更加的有序。每一次操作,小 可以选择两个满足 的位置 ,将位置 上的飞碟与位置 上的飞碟交换。
现在小 想要通过若干次操作使得飞碟的摆放满足如下条件:
- 至多存在一个在 中的整数 ,满足位置 停放的飞碟编号大于位置 停放的飞碟编号。特殊的,如果不存在这样的 ,也视为满足条件。
小 想知道他至少要通过多少次操作才使得飞碟的摆放满足上述条件呢,如果你能解决这个问题,他将会给你一张参加半人马座程序设计竞赛的门票。
【输入格式】
从文件 ufo.in 中读入数据。
输入的第一行包含两个非负整数 ,分别表示测试点编号与飞碟个数。特别的,样例的 表示该样例与编号为 的测试点的约束条件相同。
接下来一行包含 个正整数,其中第 个数表示第 个位置停放的飞碟的编号,保证给出的 个正整数均在 之间,且互不相同。
【输出格式】
输出到文件 ufo.out 中。
输出一行一个整数表示至少要进行多少次操作才能够使得飞碟的摆放满足小 给出的条件。
【样例输入1】
1 6
2 3 1 6 4 5
【样例输出1】
1
【样例解释1】
对位置 的飞碟与位置 的飞碟进行交换,则 个位置的飞碟按位置从小到大所对应的编号依次为 ,此时不难验证飞碟的摆放满足小 给出的条件。
【样例输入2】
1 20
8 13 6 11 20 3 12 18 17 4 10 1 7 16 19 5 2 15 14 9
【样例输出2】
36
【样例输入/输出3】
见选手目录下的 ufo3.in/ans,该样例满足测试点 的限制。
【样例输入/输出4】
见选手目录下的 ufo4.in/ans,该样例满足测试点 的限制。
【样例输入/输出5】
见选手目录下的 ufo5.in/ans,该样例满足测试点 的限制。
【测试点约束】
对于所有测试数据,满足:
- ;
- 保证给出的 个位置停放的飞碟编号互不相同,且均为 之间的正整数。
每个测试点的具体限制如下表:
| 测试点编号 | 特殊性质 | |
|---|---|---|
| 无 | ||
| A | ||
| 无 | ||
特殊性质 A:对于所有 ,位置 停放的飞碟编号在 之间。
相关
在下列比赛中: