이번 문제는 이미 C++로 구현한 문제이다. 파이썬 연습을 위해 파이썬으로 다시 작성해보았다. 이분탐색을 이용한 문제이다.
def count(li, m):
t = 0
for n in li:
if n >= m:
break
t += m-n
return t
N, K = map(int, input().split())
li = sorted([int(input()) for _ in range(N)])
s, e = min(li), max(li)+K
res = 0
while s <= e:
m = (s+e)//2
if count(li, m) <= K:
res = m
s = m+1
else:
e = m-1
print(res)