#P0820. 智能背单词系统

智能背单词系统

题目描述

小可正在使用一个智能背单词系统。

系统中有很多单词,每个单词都有一个固定编号,编号范围为 11 ~ 10510^5。

为了帮助小可复习,系统会维护一个“最近复习列表”,最多只能记录最近复习过的 mm 个不同单词。

接下来,小可一共进行了 nn 次单词学习,每次会学习一个编号为 aia_i 的单词。

系统规则如下:

  • 如果当前单词不在最近复习列表中,说明小可近期没有复习过它,需要安排一次“重点复习”,并把这个单词加入列表末尾。
  • 如果当前单词已经在最近复习列表中,说明它近期已经复习过,不需要安排重点复习,但要把它移动到列表末尾,表示它刚刚被复习过。
  • 如果列表已经满了,也就是已经有 mm 个单词,此时又要加入一个新单词,那么需要删除列表中最久没有被复习的那个单词。

给定小可 nn 次学习的单词编号,请你计算系统一共安排了多少次“重点复习”。

输入格式

第一行两个整数 n, mn,\ m,表示学习次数和最近复习列表最多能记录的单词数量。

第二行 nn 个整数 a1,a2,…,ana_1,a_2,\dots,a_n,表示每次学习的单词编号。

输出格式

输出一个整数,表示系统一共安排了多少次“重点复习”。

样例

10 3
1 2 3 4 3 2 1 5 4 1
7

样例1解释

初始最近复习列表为空。

第 11 次:单词 11 不在列表中 → 安排重点复习,列表 =[1]=[1],次数 =1=1

第 22 次:单词 22 不在列表中 → 安排重点复习,列表 =[1, 2]=[1,\ 2],次数 =2=2

第 33 次:单词 33 不在列表中 → 安排重点复习,列表 =[1, 2, 3]=[1,\ 2,\ 3],次数 =3=3

第 44 次:单词 44 不在列表中,列表已满 → 删除最久未复习的 11,列表 =[2, 3, 4]=[2,\ 3,\ 4],次数 =4=4

第 55 次:单词 33 在列表中 → 不安排重点复习,但将 33 移到末尾,列表 =[2, 4, 3]=[2,\ 4,\ 3]

第 66 次:单词 22 在列表中 → 不安排重点复习,但将 22 移到末尾,列表 =[4, 3, 2]=[4,\ 3,\ 2]

第 77 次:单词 11 不在列表中,列表已满 → 删除最久未复习的 44,列表 =[3, 2, 1]=[3,\ 2,\ 1],次数 =5=5

第 88 次:单词 55 不在列表中,列表已满 → 删除最久未复习的 33,列表 =[2, 1, 5]=[2,\ 1,\ 5],次数 =6=6

第 99 次:单词 44 不在列表中,列表已满 → 删除最久未复习的 22,列表 =[1, 5, 4]=[1,\ 5,\ 4],次数 =7=7

第 1010 次:单词 11 在列表中 → 不安排重点复习,但将 11 移到末尾,列表 =[5, 4, 1]=[5,\ 4,\ 1]

所以系统一共安排了 77 次重点复习。

数据范围

对于 80%80\% 的数据,1≤m<n≤10001\le m<n\le 1000。

对于 100%100\% 的数据,1≤m<n≤1061\le m<n\le 10^6。

单词编号范围为 11 ~ 10510^5。