https://www.acmicpc.net/problem/2805
기존 랜선 자르기 문제에서 반복문 안에 조건만 변경했다 기준값보다 넘는 경우는 잘라서 가져가기 때문에 조건문을 통해 중간값보다 크다면 중간값을 뺀 나머지 값을 더하도록 하였다.
import sys
n,m = map(int,sys.stdin.readline().split())
tree = list(map(int,sys.stdin.readline().split()))
start = 1
end = max(tree)
while start <= end:
mid = (start + end) // 2
cnt = 0
for i in tree:
if i >= mid:
cnt += i - mid
if cnt >= m:
start = mid + 1
else:
end = mid - 1
print(end)