도비일기

[백준 단계별 풀이 - 이분탐색] #2805 나무자르기 본문

코테준비 - Python/백준풀이

[백준 단계별 풀이 - 이분탐색] #2805 나무자르기

도비1 2022. 2. 8. 23:57

코드 

N, M = map(int, input().split())
H = list(map(int, input().split()))
# H.sort()
cnt = len(H)

start, end = 1, max(H)


while start <= end:
    tot = 0
    mid = (start + end) // 2

    # for tree in H:
    #     tot += max(tree - mid, 0)
    for tree in H:
        if tree > mid :
            tot += tree - mid

    if tot >= M :
        start = mid + 1
        answer = mid
    else :
        end = mid -1

print(answer)