막대를 잘라서,,, 나눠주거나 합하고,,, 주어진 범위 내에서 특정값을 찾는,,,
어디선가 많이 본 패턴이다.
그렇다! 이분 탐색으로 쉽게 풀 수 있는 문제이다.
# binary search
n, m = map(int, input().split())
snacks = list(map(int, input().split()))
start = 0
end = max(snacks)
# 과자 길이
result = 0
while start <= end:
# 나누어줄 수 있는 과자 개수
count = 0
mid = (start + end) // 2
if mid == 0:
count = 0
break
for snack in snacks:
if snack - mid >= 0:
count = count + (snack // mid)
if count == n:
result = mid
break
elif count > n:
result = mid
start = mid + 1
else:
end = mid - 1
print(result)