https://www.acmicpc.net/problem/1202
코테 스터디 1주차 문제로 게임아이템 문제가 나왔는데 풀다보니 유형이 똑같아서 놀랐다. 한 문제를 푸니까 두 문제가 풀리는 기적.. 게임아이템 풀다가 안풀려서 백준으로 간거였는데ㅎㅎ
오름차순 정렬로 가방을 정렬한다. 가방에 넣을 수 있는 모든 보석을 takes에 넣는다.
takes에 들어있는 보석들 중 가장 가치가 큰 걸로 챙긴다.
이미 정렬이 되어있으므로 이전 순회에서 takes에 들어간 보석은 다음 순회에서 무조건 가져갈 수 있다. <<- 이부분 때문에 오래 걸렸다 ㅠ.ㅠ
import sys
import heapq
input = sys.stdin.readline
n, k = map(int,input().split())
shop = []
for _ in range(n):
m, v = map(int,input().split())
heapq.heappush(shop, (m, v))
bags = [int(input()) for _ in range(k)]
bags.sort()
answer= 0
takes = []
for bag in bags:
while shop:
if bag >= shop[0][0]:
weight, value = heapq.heappop(shop)
heapq.heappush(takes, -value)
else:
break
if takes:
answer+= -heapq.heappop(takes)
elif not shop:
break
print(answer)