23843 콘센트

정민용·2023년 4월 28일
0

백준

목록 보기
154/286

문제

광재는 전자기기 대여사업을 시작했다. 퇴근하기 전에 다음날 손님들에게 빌려줄 N개의 전자기기를 충전하려 한다. 사용 가능한 콘센트는 M개가 있고, 성능은 모두 동일하다.

전자기기들은 한 번에 하나의 콘센트에서만 충전이 가능하고, 충전에 필요한 시간은 2^k(0 ≤ k ≤ 15, k는 정수) 형태이다.

광재의 빠른 퇴근을 위해 모든 전자기기를 충전하기 위한 최소 시간이 얼마인지 알려주자.

# 23843
import sys
input = lambda: sys.stdin.readline().strip()

# 필요 시간 정렬
# 콘센트 개수 만큼 힙에 추가
# 이후부터는 기존 힙 값에 추가
# 힙 안에 있는 최대값이 필요 시간

import heapq

n, m = map(int, input().split())
arr = list(map(int, input().split()))
arr.sort(reverse = True)

if m >= n:
    print(arr[0])
    exit(0)

time = []
for i in range(n):
    if i < m:
        heapq.heappush(time, arr[i])
    else:
        heapq.heappush(time, heapq.heappop(time) + arr[i])
        
print(max(time))

백준 23843 콘센트

0개의 댓글