๐กsolutions
๐ฌ heapq๋ชจ๋์ ์ฌ์ฉํ์ฌ ์ต์ํ, ์ต๋ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์์.
๐ฌ ๋ณด์๋ค์ ๋ฌด๊ฒ๊ฐ ์์ ์์๋๋ก ๋ฝํ ์ ์๋๋ก ์ต์ํ์ผ๋ก ๊ตฌํ
๐ฌ ๊ฐ๋ฐฉ์ ์ ํ๋ ๋ฌด๊ฒ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ๋ฒผ์ด ๊ฒ๋ถํฐ ๋ฌด๊ฑฐ์ด ์์ผ๋ก ๋์ค๋๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
๐ฌ for ๋ฐ๋ณต๋ฌธ์ ํตํด ์์ ๋ฌด๊ฒ ์ ํ์ ๊ฐ์ง ๊ฐ๋ฐฉ๋ถํฐ ๊บผ๋ด์์ ์ ํ๋ ๋ฌด๊ฒ๋ณด๋ค ๊ฐ๋ฒผ์ด ๋ณด์๋ค์ ์์ ๋ฆฌ์คํธ์ธ tmp์ ๋ชจ๋ ๋ด์๋๋ค -> ์ด๋ ์ฃผ์ํ ์ ์ ์ถํ tmp์์ ๊ฐ์ฅ ๋น์ผ ์ ๋ค๋ถํฐ ์์๋๋ก ๋ฝ์ ์ ์๊ฒ ๊ฐ๊ฒฉ์ ๋ง์ด๋์ค ๋ถํธ๋ฅผ ๋ถ์ฌ tmp ๋ฆฌ์คํธ์ heappush๋ก ๋ฃ์ด์ค๋ค. (์ด๊ฒ ๋ฐ๋ก ์ต๋ํ ๊ตฌํํ๋ ๋ฐฉ๋ฒ)
๐ฌ ๊ฐ๋ฐฉ์ ๋ด์ ์ ์๋ ๋ณด์ ์ค ๊ฐ์ฅ ์ ์ผ ๋น์ผ ๊ฐ๊ฒฉ์ ๋ณด์์ ๋ฝ์์ answer์์ ๋นผ์ค๋ค -> ์ ์ด์ ๋ณด์ ๊ฐ๊ฒฉ์ ์์๋ก ๋ฃ์ด๋จ๊ธฐ ๋๋ฌธ์ answer์์ ๋นผ์ผ์ง ๋ํ๋ ๊ฐ๋ ์ด ๋๋ค.
๐ heap์ ๋ํด ์์๋ณด์ ํ(heap)์ด๋? ํ์ ํน์ ํ ๊ท์น์ ๊ฐ์ง๋ ํธ๋ฆฌ๋ก, ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ฐพ๋ ์ฐ์ฐ์ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํด ๊ณ ์๋ ์์ ์ด์งํธ๋ฆฌ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ ์๋ฃ๊ตฌ์กฐ ํ์๋ ๋ ๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋๋ฐ, ์ต์ ํ(Min Heap) : ๋ถ๋ชจ ๋ ธ๋์ ํค๊ฐ์ด ์์ ๋ ธ๋์ ํค๊ฐ๋ณด๋ค ํญ์ ์์ ํ ์ต๋ ํ(Max Heap) : ๋ถ๋ชจ ๋ ธ๋์ ํค๊ฐ์ด ์์ ๋ ธ๋์ ํค๊ฐ๋ณด๋ค ํญ์ ํฐ ํ |
๐จ๐ปcode
import sys
import heapq
input = sys.stdin.readline
n, k = map(int, input().split())
jewelry = []
for i in range(n):
weight, price = map(int, input().rstrip().split())
heapq.heappush(jewelry, [weight, price])
bags = [int(input()) for _ in range(k)]
bags.sort() # ๊ฐ๋ฒผ์ด ๊ฒ๋ถํฐ ๋ฌด๊ฑฐ์ด ์์ผ๋ก ์ ๋ ฌ
answer = 0
tmp = []
for bag in bags:
while jewelry and bag >= jewelry[0][0]: # ๊ฐ๋ฐฉ์ ๋ด์ ์ ์๋ ์ต๋ ๋ฌด๊ฒ๋ณด๋ค ๊ฐ๋ฒผ์ด ๋ณด์๋ค์ ๋ชจ๋ ๋ด๊ธฐ
heapq.heappush(tmp, -heapq.heappop(jewelry)[1])
if tmp:
answer -= heapq.heappop(tmp)
elif not jewelry:
break
print(answer)
๐description
๋ฌธ์
์ธ๊ณ์ ์ธ ๋๋ ์๋์ด๋ ๋ณด์์ ์ ํธ๊ธฐ๋ก ๊ฒฐ์ฌํ๋ค.
์๋์ด๊ฐ ํธ ๋ณด์์ ์๋ ๋ณด์์ด ์ด N๊ฐ ์๋ค. ๊ฐ ๋ณด์์ ๋ฌด๊ฒ Mi์ ๊ฐ๊ฒฉ Vi๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์๋์ด๋ ๊ฐ๋ฐฉ์ K๊ฐ ๊ฐ์ง๊ณ ์๊ณ , ๊ฐ ๊ฐ๋ฐฉ์ ๋ด์ ์ ์๋ ์ต๋ ๋ฌด๊ฒ๋ Ci์ด๋ค. ๊ฐ๋ฐฉ์๋ ์ต๋ ํ ๊ฐ์ ๋ณด์๋ง ๋ฃ์ ์ ์๋ค.
์๋์ด๊ฐ ํ์น ์ ์๋ ๋ณด์์ ์ต๋ ๊ฐ๊ฒฉ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ N, K ≤ 300,000)
๋ค์ N๊ฐ ์ค์๋ ๊ฐ ๋ณด์์ ์ ๋ณด Mi์ Vi๊ฐ ์ฃผ์ด์ง๋ค. (0 ≤ Mi, Vi ≤ 1,000,000)
๋ค์ K๊ฐ ์ค์๋ ๊ฐ๋ฐฉ์ ๋ด์ ์ ์๋ ์ต๋ ๋ฌด๊ฒ Ci๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ Ci ≤ 100,000,000)
๋ชจ๋ ์ซ์๋ ์์ ์ ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์๋์ด๊ฐ ํ์น ์ ์๋ ๋ณด์ ๊ฐ๊ฒฉ์ ํฉ์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.