[소프티어] 금고털이
T
TikaToka
import sys
w, n = map(int, input().split())
golds = []
for i in range(n):
golds.append(list(map(int, input().split())))
golds.sort(key=lambda x: -x[1])
gram = 0
answer = 0
for i in golds:
if gram >= w:
break
if gram + i[0] <= w:
gram += i[0]
answer += i[0] * i[1]
else:
temp = w - gram
gram = w
answer += temp * i[1]
print(answer)
import heapq
w, n = map(int, input().split())
# 1g당 금 가격의 역순으로 최대 힙 구성
golds = []
for _ in range(n):
weight, price = map(int, input().split())
heapq.heappush(golds, (-price, weight))
gram = 0
answer = 0
while golds and gram < w:
neg_price, weight = heapq.heappop(golds)
price = -neg_price # 원래의 가격 복원
if gram + weight <= w:
gram += weight
answer += weight * price
else:
remaining = w - gram
answer += remaining * price
break
print(answer)


