为了更好的阅读体检,可以查看我的算法学习网
在线评测链接:P1173
题目内容
塔子哥是一个学生,他最近学习的时候遇到了一个题目,题目给定了一个长度为 n n n 的排列吗,题目要求将这个排列的前 k k k 个数排列成一个长度为 k k k 的排列,但是题目规定只能进行相邻两个数的交换操作,题目问最少需要多少次上述操作才能满足题目要求?
塔子哥思考了很久还是不会,他现在想请教你,想让你帮忙解决一下这个问题。
长度为 n n n 的排列指 1 1 1 到 n n n 中每个数都恰好出现 1 1 1 次。例如 [ 2 , 3 , 1 ] [2,3,1] [2,3,1] 是排列, [ 2 , 3 , 4 ] [2,3,4] [2,3,4] 则不是排列。
输入描述
第一行输入两个正整数 n n n 和 k k k 。
第二行输入 n n n 个正整数 a i a_i ai ,代表塔子哥拿到的排列。
1 ≤ k ≤ n ≤ 200000 1\le k\le n\le 200000 1≤k≤n≤200000
1 ≤ a i ≤ n 1\le a_i\le n 1≤ai≤n
输出描述
一个整数,代表最小的操作次数。
样例
输入
5 3
2 4 1 3 5
输出
2
样例解释
第一次交换 4 4 4 和 1 1 1 ,数组变成 [ 2 , 1 , 4 , 3 , 5 ] [2,1,4,3,5] [2,1,4,3,5] 。
第二次交换 4 4 4 和 3 3 3 ,数组变成 [ 2 , 1 , 3 , 4 , 5 ] [2,1,3,4,5] [2,1,3,4,5] 。
此时前 3 3 3 个数构成排列,满足条件。