보석 도둑

보석 도둑

Prob

보석 N개, 무게 M, 가격 V
가방 K개, 최대 무게 C, 최대 한 개 보석만 넣을 수 있음
보석의 최대 가격

Solv

가방과 보석을 C와 M을 기준으로 minheap 생성
가방은 C를 원소로 보석은 (M, V)를 원소로 함
C부터 하나씩 pop하면서 C보다 작은 M들을 V를 기준으로 maxheap에 담은 후 maxheap.top()으로 가능한 보석 중 가장 비싼 것 pop
남은 보석은 다음 C의 기준에 포함되므로 그대로 활용

Check

보석 [(1, 65), (5, 23), (3, 99), (6, 23), (2, 23)]
가방 [3,4,2,5,3]

CVmaxsum
265(1) 23(2)65
399(3) 23(2)99
323(2)23
4 0
523(5)23

Ref


Modified by Sungbin Shim