#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 的贴纸。

之后继续处理剩余贴纸,最终可以收集齐编号 1166 的全部贴纸,答案为 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,M200N, M \le 200

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

对于所有评测用例,1N,M,K2×1051 \le N, M, K \le 2 \times 10^51AiN1 \le A_i \le N