Algorithm/Greedy

[백준] 1202번 보석 도둑

등촌동 꼬북이 2020. 10. 20. 14:39

후.. 우선순위큐를 쓰지 않으면 시초가 오지게 뜬다..

 

시초 안뜨게 하려면 우순큐로 풀어야됨

 

우순큐 시간복잡도 개꿀.. 

 

import sys
import heapq

def greedy(jewel, bagData):
    ans = 0
    pickedJewel = []
    for _ in range(K):
        bagSize = heapq.heappop(bagData)
        while jewel and bagSize >= jewel[0][0]:
            w, v = heapq.heappop(jewel)
            heapq.heappush(pickedJewel, -v)
        if pickedJewel:
            ans -= heapq.heappop(pickedJewel)
        elif not jewel:
            break
    return ans

N, K = map(int, sys.stdin.readline().split())
M= []
Bag= []

for _ in range(N):
    heapq.heappush(M, list(map(int, sys.stdin.readline().split())))

for _ in range(K):
    heapq.heappush(Bag, int(sys.stdin.readline()))

print(greedy(M, Bag))