이 문제는 이분 탐색을 이용해 최댓값을 찾으면 되는 문제이다.
처음에는 시간 초과가 났었는데 나무의 수가 목표량을 넘어갈 때 brake를 걸어주니 통과됐다.
import sys
n, m = map(int,sys.stdin.readline().split())
array = list(map(int,input().split()))
start = 0
end = max(array)
result=0
while start <= end :
mid = (start + end) //2
total = 0
for x in array:
if x >= mid:
total += x-mid
if total > m:
break
if total >= m:
result = mid
start = mid +1
else:
end = mid -1
print(result)