https://www.acmicpc.net/problem/2805
이분 탐색을 활용하여 값을 찾아가면 문제를 해결할 수 있습니다.
여기서 유의할 점은 h보다 낮은 부분은 포함을 시키지 않기 때문에 h보다 클 경우만 구해줘야 합니다.
for i in tree:
if i > mid: # 배열에 있는 나무의 길이가 mid보다 클 경우만 cnt에 추가
cnt += i - mid
import sys
input = sys.stdin.readline
n,m = map(int,input().split())
tree = list(map(int,input().split()))
l,r = 1, max(tree)
while l <= r:
mid = (l+r) // 2
cnt = 0
for i in tree:
if i > mid:
cnt += i - mid
if cnt >= m:
l = mid + 1
else:
r = mid - 1
print(r)