#CSPJ1023. 玩具车(toy)

玩具车(toy)

题目描述

小 Z 虽然已经长大,但他内心还是一个小男孩,他最喜欢玩玩具了,他有 nn 个不同的玩具,编号为 1,2,,n1,2,\cdots,n,它们都被放在了很高的架子上所以小 Z 拿不到它们。

为了让他的房间有足够的空间,在任何时刻地板上都不会有超过 kk 个玩具。

小 Z 在地板上玩玩具。小 Y 则在房间里陪小 Z,当小 Z 想玩地板上的其他玩具时,他会自己去拿,如果他想玩的玩具在架子上,小 Y 则会帮他去拿,当小 Y 拿玩具的时候,如果此时地板上已经有 kk 个玩具,那么小 Y 会将一个地板上的玩具放上架子使得地板上有足够的空间。

  • 即要保证任何时刻,地板上的玩具个数不超过 kk

小 Y 很了解小 Z,所以他能够预料到小 Z 想玩些什么玩具。小 Y 想尽量的使自己去架子上拿玩具的次数尽量的少,应该怎么安排放玩具的顺序呢?

输入格式

toy.in 文件读入数据。

第一行输入三个整数 n,k,pn,k,p 分别表示玩具的个数,地板上玩具的最多个数,和小 Z 想玩玩具的序列。

接下来有 pp 行,每行输入一个整数表示小 Z 想玩的玩具编号。

输出格式

输出到 toy.out 文件。

输出一行一个整数,表示小 Y 最少需要拿玩具的次数。

输入输出样例

3 2 7
1
2
3
1
3
1
2
4

样例2

点击链接 ex_toy2.inex_toy2.out 下载大样例 2 的输入数据和输出数据。

说明提示

样例解释

  • 11 次,小 Z 想玩玩具 11,玩具 11 在架子上,所以小 Y 需要去架子上拿一次。
  • 22 次,小 Z 想玩玩具 22,玩具 22 在架子上,所以小 Y 需要去架子上拿一次。
  • 33 次,小 Z 想玩玩具 33,玩具 33 在架子上,所以小 Y 需要去架子上拿一次,此时地面上已经有 1,21,2 两个玩具,小 Y 选择将玩具 22 放回架子,地面上变成 1,31,3
  • 44 次,小 Z 想玩玩具 11,玩具 11 已经在地面,所以小 Y 不需要去架子上拿。
  • 55 次,小 Z 想玩玩具 33,玩具 33 已经在地面,所以小 Y 不需要去架子上拿。
  • 66 次,小 Z 想玩玩具 11,玩具 11 已经在地面,所以小 Y 不需要去架子上拿。
  • 77 次,小 Z 想玩玩具 22,玩具 22 在架子上,所以小 Y 需要去架子上拿一次,此时地面上已经有 1,31,3 两个玩具,小 Y 选择将将玩具 11 放回架子,地面上变成 2,32,3

小 Y 总共需要去架子上拿 44 次玩具。可以证明,没有比 44 次更小的方案。

数据范围

对于 30%30\% 的数据,1n500,1k200,1p20001\le n \le 500,1\le k \le 200,1\le p \le 2000

对于 100%100\% 的数据,$1\le n \le 10^5,1\le k \le 10^5, 1\le p \le 5 \times 10^5$。