현재 가장 작은 무게를 수용할 수 있는 가방 이하의 모든 보석 중 가장 값이 큰 것을 뽑아내고, 이를 가방이 끝날 때까지 반복하는 것이 목표이다.
import sys
import heapq
read = sys.stdin.readline
n, k = map(int, read().split())
listJewelry = []
listHeight = []
for _ in range(n):
a, b = map(int, read().split())
listJewelry.append([a, b])
for _ in range(k):
a = int(read())
listHeight.append(a)
listJewelry.sort()
listHeight.sort()
result = 0
temp = []
for i in listHeight:
while listJewelry and i >= listJewelry[0][0]:
heapq.heappush(temp, -listJewelry[0][1])
heapq.heappop(listJewelry)
if temp:
result += heapq.heappop(temp)
print(-result)