[白俊]2805番木を切る


データ値が大きすぎて、バイナリナビゲーションで解決する必要がある問題
一番高いのが一番小さいので、間違えました.
n,m=map(int,input().split())

tree=list(map(int,input().split()))

def binary_search(array,target,start,end):
    global answer
    if start>end:
        print(answer)
        return 
    mid=(start+end)//2
    sum=0
  
    for x in tree:
        if x-mid>0:
            sum+=x-mid

    if sum==target:
        print(mid)
        return 
    elif sum>target:
        answer=max(answer,mid)
        return binary_search(array,target,mid+1,end)
    elif  sum<target:
        return binary_search(array,target,start,mid-1)
   

answer=0
binary_search(tree,m,0,max(tree))