N, K = list(map(int, input().split()))
A = list(map(int, input().split()))

l = 0
r = max(A)
while l + 1 < r:
    m = (l+r)//2
    n = sum([(x-1)//m for x in A])
    if n > K:
        l = m
    else:
        r = m
print(r) N, K = list(map(int, input().split())) N list(map(int, input().split())) list 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 l = 0 l 0 r = max(A) r max(A) max A while l + 1 < r:
    m = (l+r)//2
    n = sum([(x-1)//m for x in A])
    if n > K:
        l = m
    else:
        r = m l + 1 < r l + 1 l 1 r m = (l+r)//2 m (l+r)//2 l+r l r 2 (x-1)//m for x in A for x in A x A for x in A (x-1)//m x-1 x 1 m n = sum([(x-1)//m for x in A]) n sum([(x-1)//m for x in A]) sum [(x-1)//m for x in A] if n > K:
        l = m
    else:
        r = m n > K n K l = m l m r = m r m print(r) print r l = 0 0 l r = m m r r = max(A) max(A) r l = m m l K = list(map(int, input().split())) list(map(int, input().split())) K A = list(map(int, input().split())) list(map(int, input().split())) A N, K = list(map(int, input().split())) list(map(int, input().split())) N m = (l+r)//2 (l+r)//2 m n = sum([(x-1)//m for x in A]) sum([(x-1)//m for x in A]) n
N, K = list(map(int, input().split()))
A = list(map(int, input().split()))

l = 0
r = max(A)
while l + 1 < r:
    m = (l+r)//2
    n = sum([(x-1)//m for x in A])
    if n > K:
        l = m
    else:
        r = m
print(r)