https://www.acmicpc.net/problem/2805

1부터 가장 긴 나무 길이까지 이분탐색을 돌면서 조건에 맞는지 찾으면 된다.
한 번 틀렸는데 틀린 이유는 문제에서 절단기의 최댓값이라고 했는데 난 찾자마자 바로 출력했기 때문이다.
=> answer 계속 갱신
n, k = map(int, input().split())
tree = list(map(int, input().split()))
tree.sort()
answer = 0
low = 1
high = tree[-1]
while low <= high:
mid = (low + high) // 2
cut = 0
for i in range(n-1, -1, -1):
if mid > tree[i]:
break
else:
cut += tree[i] - mid
if cut >= k: # 절단기의 최댓값
answer = mid
low = mid + 1
else: # cut < k
high = mid - 1
print(answer)