#P16816. [蓝桥杯 2026 国 Python B] 贴纸册交换
[蓝桥杯 2026 国 Python B] 贴纸册交换
题目描述
小蓝正在收集一本贴纸册。贴纸共有 种,编号为 。他会按顺序得到 张贴纸,第 张贴纸的编号为 。
处理一张贴纸时:
- 如果小蓝还没有收集过编号为 的贴纸,就把这张贴纸贴进贴纸册;
- 如果小蓝已经收集过编号为 的贴纸,这张重复贴纸会变成 张交换券。
每当交换券数量达到 张时,小蓝必须立刻消耗 张交换券,换得当前编号最小且尚未收集的贴纸,并把它贴进贴纸册。
如果小蓝已经收集齐全部 种贴纸,之后得到的贴纸不会再改变已收集的贴纸种类数。
请你计算处理完全部 张贴纸后,小蓝一共收集到了多少种贴纸。
输入格式
第一行包含三个整数 ,分别表示贴纸种类数、得到的贴纸张数和每次兑换需要的交换券数量。
第二行包含 个整数 ,表示小蓝按顺序得到的贴纸编号。
输出格式
输出一行,包含一个整数,表示处理完全部贴纸后小蓝收集到的贴纸种类数。
6 10 3
2 4 2 2 5 4 1 3 3 6
6
5 7 2
4 4 2 4 2 5 5
5
提示
【样例说明 1】
前两张贴纸编号为 ,都可以直接贴进贴纸册。第 张和第 张贴纸编号都是 ,属于重复贴纸,因此得到 张交换券。
第 张贴纸编号为 ,直接贴进贴纸册。第 张贴纸编号为 ,又得到 张交换券,此时共有 张交换券,必须立刻兑换。当前尚未收集的最小编号为 ,因此换得编号为 的贴纸。
之后继续处理剩余贴纸,最终可以收集齐编号 到 的全部贴纸,答案为 。
【样例说明 2】
第 张和第 张贴纸都与已经收集的编号 重复。在处理第 张贴纸后共有 张交换券,必须兑换当前最小缺失贴纸 。
后面编号 和编号 的重复贴纸又产生 张交换券,最终兑换得到编号 的贴纸。处理完后, 均已收集,答案为 。
【评测用例规模与约定】
对于 的评测用例,。
对于 的评测用例,。
对于所有评测用例,,。