#CSPJ1023. 玩具车(toy)
玩具车(toy)
题目描述
小 Z 虽然已经长大,但他内心还是一个小男孩,他最喜欢玩玩具了,他有 个不同的玩具,编号为 ,它们都被放在了很高的架子上所以小 Z 拿不到它们。
为了让他的房间有足够的空间,在任何时刻地板上都不会有超过 个玩具。
小 Z 在地板上玩玩具。小 Y 则在房间里陪小 Z,当小 Z 想玩地板上的其他玩具时,他会自己去拿,如果他想玩的玩具在架子上,小 Y 则会帮他去拿,当小 Y 拿玩具的时候,如果此时地板上已经有 个玩具,那么小 Y 会将一个地板上的玩具放上架子使得地板上有足够的空间。
- 即要保证任何时刻,地板上的玩具个数不超过 。
小 Y 很了解小 Z,所以他能够预料到小 Z 想玩些什么玩具。小 Y 想尽量的使自己去架子上拿玩具的次数尽量的少,应该怎么安排放玩具的顺序呢?
输入格式
从 toy.in
文件读入数据。
第一行输入三个整数 分别表示玩具的个数,地板上玩具的最多个数,和小 Z 想玩玩具的序列。
接下来有 行,每行输入一个整数表示小 Z 想玩的玩具编号。
输出格式
输出到 toy.out
文件。
输出一行一个整数,表示小 Y 最少需要拿玩具的次数。
输入输出样例
3 2 7
1
2
3
1
3
1
2
4
样例2
点击链接 ex_toy2.in 和 ex_toy2.out 下载大样例 2 的输入数据和输出数据。
说明提示
样例解释
- 第 次,小 Z 想玩玩具 ,玩具 在架子上,所以小 Y 需要去架子上拿一次。
- 第 次,小 Z 想玩玩具 ,玩具 在架子上,所以小 Y 需要去架子上拿一次。
- 第 次,小 Z 想玩玩具 ,玩具 在架子上,所以小 Y 需要去架子上拿一次,此时地面上已经有 两个玩具,小 Y 选择将玩具 放回架子,地面上变成 。
- 第 次,小 Z 想玩玩具 ,玩具 已经在地面,所以小 Y 不需要去架子上拿。
- 第 次,小 Z 想玩玩具 ,玩具 已经在地面,所以小 Y 不需要去架子上拿。
- 第 次,小 Z 想玩玩具 ,玩具 已经在地面,所以小 Y 不需要去架子上拿。
- 第 次,小 Z 想玩玩具 ,玩具 在架子上,所以小 Y 需要去架子上拿一次,此时地面上已经有 两个玩具,小 Y 选择将将玩具 放回架子,地面上变成 。
小 Y 总共需要去架子上拿 次玩具。可以证明,没有比 次更小的方案。
数据范围
对于 的数据,;
对于 的数据,$1\le n \le 10^5,1\le k \le 10^5, 1\le p \le 5 \times 10^5$。
相关
在下列比赛中: