import sys
K, N = map(int, input().split())
lan = [int(sys.stdin.readline()) for _ in range(K)]
start, end = 1, max(lan) #이분탐색 처음과 끝위치
while start <= end: #적절한 랜선의 길이를 찾는 알고리즘
mid = (start + end) // 2 #중간 위치
lines = 0 #랜선 수
for i in lan:
lines += i // mid #분할 된 랜선 수
if lines >= N: #랜선의 개수가 분기점
start = mid + 1
else:
end = mid - 1
print(end)
O(logN)
백트래킹이랑 dfs bfs 하다가 이진탐색 문제 나오니까 조금 쉬워진 느낌이다..
난 이진탐색도 중요하지만 그래프 탐색이 좀 더 어려우니 같이 공부 좀 해야겠다..