https://www.acmicpc.net/problem/1654
#k = 가지고 있는 갯수, n = 잘라야할 랜선 갯수
k,n = map(int, input().split())
a=[]
for _ in range(k):
a.append(int(input()))
start =1
end = max(a)
while start<=end:
mid = (start+end)//2
cnt=0
for i in a:
#잘라서 몫만
cnt+=i//mid
if cnt>= n:
start =mid+1
else:
end=mid-1
print(end)