#joi2017yod. [joi2017yo_d]ぬいぐるみの整理 (Plush Toys)
[joi2017yo_d]ぬいぐるみの整理 (Plush Toys)
问题
某位JOI相关人员在玩具店工作。今天,他们需要整理一下店内的毛绒玩具区。
毛绒玩具区的货架上排列着N个毛绒玩具,从左到右依次排列。货架被分隔成了N个小格子,每个小格子放置一个毛绒玩具。这家玩具店总共销售M种类型的毛绒玩具,每种玩具都被标上了1到M的编号。排在货架上的N个毛绒玩具中,每个毛绒玩具都属于这M种类型中的一种。另外,每种类型的毛绒玩具至少有一个。
为了美观起见,他们决定将同一类型的毛绒玩具连续地放置在货架上。他们使用以下方法来对毛绒玩具进行重新排列:
- 从N个毛绒玩具中选择若干个取下来。没有被取下的毛绒玩具位置保持不变。
- 将取下来的毛绒玩具按照任意顺序放回货架上的空白小格子里。
重新排列后,相同类型的毛绒玩具必须全部连续地放置在货架上。请编写一个程序,计算为了完成重新排列而需要取下的毛绒玩具的最小数量。
输入
输入由1 + N行组成。
第1行包含两个整数N和M(,),表示毛绒玩具的数量和类型的数量。
接下来的N行中,每行包含一个整数,范围在1到M之间。第i行()的整数表示放置在货架上第i个小格子中的毛绒玩具的类型。对于每种类型,至少有一个毛绒玩具存在。
输出
输出为一行,表示为了重新排列而需要取下的毛绒玩具的最小数量。
输入示例 1
7 2
1
2
2
2
1
2
1
输出示例 1
2
在示例1中,初始时放置在货架上的毛绒玩具类型从左到右依次为1、2、2、2、1、2、1。为了使重新排列所需取下的毛绒玩具数量最小,可以将第1个和第6个毛绒玩具取下,并将类型为2的毛绒玩具放回第1个位置,将类型为1的毛绒玩具放回第6个位置。此时,取下的毛绒玩具数量为2。
输入示例 2
12 4
1
3
2
4
2
1
2
3
1
1
3
4
输出示例 2
7