앎을 경계하기

Programming/Algorithm

백준 #2805 - 나무 자르기 (python3)

양갱맨 2019. 11. 17. 03:46

N, M = map(int, input().split(' '))
arr = list(map(int, input().split(' ')))
arr = sorted(arr)

high = arr[-1]
low = 0
def summation(arr, cut):
    res = 0
    for tree in arr:
        if cut > tree:
            continue
        res += tree-cut
    return res

while True:
    mid = (low+high)//2
    res = summation(arr, mid)
    if res == M:
        print(mid)
        exit()
    if high-1 <= low:
        break
    elif res > M:
        low = mid
    else:
        high = mid
print(mid)

'Programming > Algorithm' 카테고리의 다른 글

백준 #1300 - K번째 수  (0) 2019.11.20
백준 #2022 - 사다리 (python3)  (0) 2019.11.17
백준 #1654 - 랜선 자르기 (python3)  (0) 2019.11.17
백준 #1890 - 점프  (0) 2019.11.09
백준 #2579 - 계단 오르기  (0) 2019.11.09