def I():
return input()
def II():
return int(input())
def MI():
return map(int, input().split())
def LI():
return list(input().split())
def LII():
return list(map(int, input().split()))
def GMI():
return map(lambda x: int(x) - 1, input().split())
def LGMI():
return list(map(lambda x: int(x) - 1, input().split()))
from collections import Counter, defaultdict, deque
from heapq import nsmallest, nlargest, heapify, heappop, heappush
def main():
n, k = LII()
ids = LGMI()
next_pos = [n] * n
pos = [n] * n
for i in range(n - 1, -1, -1):
next_pos[i] = pos[ids[i]]
pos[ids[i]] = i
hpq = []
cnt = 0
vis = [0] * n
ans = 0
for i in range(n):
while hpq and vis[hpq[0] % n] == 0:
heappop(hpq)
if vis[ids[i]] == 0:
if cnt == k:
vis[heappop(hpq) % n] = 0
cnt -= 1
vis[ids[i]] = 1
heappush(hpq, -next_pos[i] * n + ids[i])
cnt += 1
ans += 1
heappush(hpq, -next_pos[i] * n + ids[i])
print(ans)
main()
1002. Find Common Characters | 1602A - Two Subsequences |
1555A - PizzaForces | 1607B - Odd Grasshopper |
1084A - The Fair Nut and Elevator | 1440B - Sum of Medians |
1032A - Kitchen Utensils | 1501B - Napoleon Cake |
1584B - Coloring Rectangles | 1562B - Scenes From a Memory |
1521A - Nastia and Nearly Good Numbers | 208. Implement Trie |
1605B - Reverse Sort | 1607C - Minimum Extraction |
1604B - XOR Specia-LIS-t | 1606B - Update Files |
1598B - Groups | 1602B - Divine Array |
1594B - Special Numbers | 1614A - Divan and a Store |
2085. Count Common Words With One Occurrence | 2089. Find Target Indices After Sorting Array |
2090. K Radius Subarray Averages | 2091. Removing Minimum and Maximum From Array |
6. Zigzag Conversion | 1612B - Special Permutation |
1481. Least Number of Unique Integers after K Removals | 1035. Uncrossed Lines |
328. Odd Even Linked List | 1219. Path with Maximum Gold |