题目描述
给定一个由 N 个正整数组成的序列 A=(A1,A2,…,AN),其中每个 Ai 的取值为 1,2,…,K。
你可以对这个序列执行以下操作任意次数:
- 交换两个相邻元素,即选择 i 和 j,使得 ∣i−j∣=1,并交换 Ai 和 Aj。
找出使得 A 满足以下条件所需的最小操作次数:
- A 包含 (1,2,…,K) 作为连续子序列,即存在一个不超过 N−K+1 的正整数 n,满足 An=1,An+1=2,…,An+K−1=K。
约束条件
- 2≤K≤16
- K≤N≤200
- Ai 的取值为 1,2,…,K
- A 中至少包含 1,2,…,K 中的每个数
输入
从标准输入中按以下格式获得输入:
N K
A1 A2 … AN
输出
打印使得 A 满足条件所需的最小操作次数。
示例输入 1
4 3
3 1 2 1
示例输出 1
2
一种最优操作序列如下:
- 交换 A1 和 A2,将 A 变为 (1,3,2,1)。
- 交换 A2 和 A3,将 A 变为 (1,2,3,1)。
- 现在我们有 A1=1,A2=2,A3=3,满足条件。
示例输入 2
5 5
4 1 5 2 3
示例输出 2
5
示例输入 3
8 4
4 2 3 2 4 2 1 4
示例输出 3
5