#ATarc126d. [ARC126D] Pure Straight

[ARC126D] Pure Straight

题目描述

给定一个由 NN 项组成的正整数序列 A=(A1,A2,,AN)A = (A_1, A_2, \ldots, A_N)。每个 AiA_i 都是 1,2,,K1, 2, \ldots, K 中的某一个数。

你可以对该数列进行如下操作任意次:

  • 交换相邻的两个元素。也就是说,可以选择满足 ij=1|i-j|=1i,ji, j,交换 AiA_iAjA_j

请你求出,为了使数列 AA 满足以下条件,所需的最小操作次数:

  • 数列 AA 包含 (1,2,,K)(1, 2, \ldots, K) 作为一个连续子序列。也就是说,存在某个正整数 nn1nNK+11 \leq n \leq N-K+1,使得 An=1,An+1=2,,An+K1=KA_n = 1, A_{n+1} = 2, \ldots, A_{n+K-1} = K

输入格式

输入通过标准输入给出,格式如下:

NN KK A1A_1 A2A_2 \ldots ANA_N

输出格式

输出使数列 AA 满足条件所需的最小操作次数。

样例 1

输入

4 3
3 1 2 1

输出

2

样例 2

输入

5 5
4 1 5 2 3

输出

5

样例 3

输入

8 4
4 2 3 2 4 2 1 4

输出

5

说明/提示

限制条件

  • 2K162 \leq K \leq 16
  • KN200K \leq N \leq 200
  • 每个 AiA_i 等于 1,2,,K1, 2, \ldots, K 中的某一个
  • 数列 AA 至少包含 1,2,,K1, 2, \ldots, K 中的每一个数各至少一次

样例解释 1

例如,按如下方式操作是最优的:

  • 交换 A1A_1A2A_2AA 变为 (1,3,2,1)(1,3,2,1)
  • 交换 A2A_2A3A_3AA 变为 (1,2,3,1)(1,2,3,1)
  • 此时 A1=1,A2=2,A3=3A_1 = 1, A_2 = 2, A_3 = 3,满足条件。

由 ChatGPT 4.1 翻译