#P16816. [蓝桥杯 2026 国 Python B] 贴纸册交换

[蓝桥杯 2026 国 Python B] 贴纸册交换

题目描述

小蓝正在收集一本贴纸册。贴纸共有 NN 种,编号为 1,2,…,N1, 2, \dots, N。他会按顺序得到 MM 张贴纸,第 ii 张贴纸的编号为 AiA_i。

处理一张贴纸时:

  • 如果小蓝还没有收集过编号为 AiA_i 的贴纸,就把这张贴纸贴进贴纸册;
  • 如果小蓝已经收集过编号为 AiA_i 的贴纸,这张重复贴纸会变成 11 张交换券。

每当交换券数量达到 KK 张时,小蓝必须立刻消耗 KK 张交换券,换得当前编号最小且尚未收集的贴纸,并把它贴进贴纸册。

如果小蓝已经收集齐全部 NN 种贴纸,之后得到的贴纸不会再改变已收集的贴纸种类数。

请你计算处理完全部 MM 张贴纸后,小蓝一共收集到了多少种贴纸。

输入格式

第一行包含三个整数 N,M,KN, M, K,分别表示贴纸种类数、得到的贴纸张数和每次兑换需要的交换券数量。

第二行包含 MM 个整数 A1,A2,…,AMA_1, A_2, \dots, A_M,表示小蓝按顺序得到的贴纸编号。

输出格式

输出一行,包含一个整数,表示处理完全部贴纸后小蓝收集到的贴纸种类数。

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,42, 4,都可以直接贴进贴纸册。第 33 张和第 44 张贴纸编号都是 22,属于重复贴纸,因此得到 22 张交换券。

第 55 张贴纸编号为 55,直接贴进贴纸册。第 66 张贴纸编号为 44,又得到 11 张交换券,此时共有 33 张交换券,必须立刻兑换。当前尚未收集的最小编号为 11,因此换得编号为 11 的贴纸。

之后继续处理剩余贴纸,最终可以收集齐编号 11 到 66 的全部贴纸,答案为 66。

【样例说明 2】

第 22 张和第 44 张贴纸都与已经收集的编号 44 重复。在处理第 44 张贴纸后共有 22 张交换券,必须兑换当前最小缺失贴纸 11。

后面编号 22 和编号 55 的重复贴纸又产生 22 张交换券,最终兑换得到编号 33 的贴纸。处理完后,1,2,3,4,51,2,3,4,5 均已收集,答案为 55。

【评测用例规模与约定】

对于 30%30\% 的评测用例,N,M≤200N, M \le 200。

对于 60%60\% 的评测用例,N,M≤5000N, M \le 5000。

对于所有评测用例,1≤N,M,K≤2×1051 \le N, M, K \le 2 \times 10^5,1≤Ai≤N1 \le A_i \le N。