N, M = map(int, input().split(' '))
arr = list(map(int, input().split(' ')))
arr = sorted(arr)
high = arr[-1]
low = 0
def summation(arr, cut):
res = 0
for tree in arr:
if cut > tree:
continue
res += tree-cut
return res
while True:
mid = (low+high)//2
res = summation(arr, mid)
if res == M:
print(mid)
exit()
if high-1 <= low:
break
elif res > M:
low = mid
else:
high = mid
print(mid)
'Programming > Algorithm' 카테고리의 다른 글
백준 #1300 - K번째 수 (0) | 2019.11.20 |
---|---|
백준 #2022 - 사다리 (python3) (0) | 2019.11.17 |
백준 #1654 - 랜선 자르기 (python3) (0) | 2019.11.17 |
백준 #1890 - 점프 (0) | 2019.11.09 |
백준 #2579 - 계단 오르기 (0) | 2019.11.09 |