n, k = map(int, input().split())
a = list(map(int, input().split()))


def cut(x):
    cut_count = 0
    for i in range(n):
        cut_count += (a[i]-1)//x
    return cut_count


l = 0
r = 10**9
while r-l > 1:
    mid = (l+r)//2
    if k >= cut(mid):
        r = mid
    else:
        l = mid
print(r)
 n, k = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split k a = list(map(int, input().split())) a list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split def cut(x):
    cut_count = 0
    for i in range(n):
        cut_count += (a[i]-1)//x
    return cut_count cut cut_count = 0 cut_count 0 for i in range(n):
        cut_count += (a[i]-1)//x
     i range(n) range n cut_count += (a[i]-1)//x cut_count (a[i]-1)//x a[i]-1 a[i] a i 1 x return cut_count cut_count x x l = 0 l 0 r = 10**9 r 10**9 10 9 while r-l > 1:
    mid = (l+r)//2
    if k >= cut(mid):
        r = mid
    else:
        l = mid r-l > 1 r-l r l 1 mid = (l+r)//2 mid (l+r)//2 l+r l r 2 if k >= cut(mid):
        r = mid
    else:
        l = mid k >= cut(mid) k cut(mid) cut mid r = mid r mid l = mid l mid print(r) print r l = mid mid l k = map(int, input().split()) map(int, input().split()) k n, k = map(int, input().split()) map(int, input().split()) n def cut(x):
    cut_count = 0
    for i in range(n):
        cut_count += (a[i]-1)//x
    return cut_count def cut(x):
    cut_count = 0
    for i in range(n):
        cut_count += (a[i]-1)//x
    return cut_count cut mid = (l+r)//2 (l+r)//2 mid a = list(map(int, input().split())) list(map(int, input().split())) a r = 10**9 10**9 r r = mid mid r l = 0 0 l
n, k = map(int, input().split())
a = list(map(int, input().split()))


def cut(x):
    cut_count = 0
    for i in range(n):
        cut_count += (a[i]-1)//x
    return cut_count


l = 0
r = 10**9
while r-l > 1:
    mid = (l+r)//2
    if k >= cut(mid):
        r = mid
    else:
        l = mid
print(r)

