802A - Heidi and Library (easy) - CodeForces Solution


greedy *1800

Please click on ads to support us..

Python Code:

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()


Comments

Submit
0 Comments
More Questions

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