practivceAlgorithm/백준

[백준][Python] 17503 맥주축제

findTheValue 2021. 8. 18. 13:14

선호도 관리를 어떻게 할 것인가? 일단 힙으로 하긴했는데.. 최선일지는 모르겠다.

 

import sys
from heapq import heappop,heappush
input = sys.stdin.readline

# N일 K종류 맥주 무료 제공
# 하루 맥주 1병 전에 받은 종류 못받음.
# 맥주 N개의 선호도 합 M이상.
# 조합 K 종류 맥주 중 N개 추출 합이 M이상되는.
# 도수 낮은거 순으로 먹음.
N, M, K = map(int, input().split())
beers = [list(map(int, input().split())) for _ in range(K)]
beers2 = sorted(beers,key=lambda x: (x[1],x[0]))
heap = []
flav_p = 0
cnt =0
left = 0
for beer in beers2:
    flav_p += beer[0]
    heappush(heap,beer[0])
    if len(heap) == N:
        if flav_p >=M:
            answer = beer[1]
            break
        else:
            flav_p -= heappop(heap)
else:
    print(-1)
    exit()
print(answer)