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

l, r = 0, max(a)

def ok(m):
    cut = 0
    for x in a:
        cut += (x - 1) // m
    return cut <= k

while r - l > 1:
    m = (l + r) // 2
    if ok(m):
        r = m
    else:
        l = m

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 l, r = 0, max(a) l 0 r max(a) max a def ok(m):
    cut = 0
    for x in a:
        cut += (x - 1) // m
    return cut <= k ok cut = 0 cut 0 for x in a:
        cut += (x - 1) // m
     x a cut += (x - 1) // m cut (x - 1) // m x - 1 x 1 m return cut <= k cut <= k cut k m m while r - l > 1:
    m = (l + r) // 2
    if ok(m):
        r = m
    else:
        l = m r - l > 1 r - l r l 1 m = (l + r) // 2 m (l + r) // 2 l + r l r 2 if ok(m):
        r = m
    else:
        l = m ok(m) ok m r = m r m l = m l m print(r) print r r = 0, max(a) max(a) r l = m m l n, k = map(int, input().split()) map(int, input().split()) n m = (l + r) // 2 (l + r) // 2 m def ok(m):
    cut = 0
    for x in a:
        cut += (x - 1) // m
    return cut <= k def ok(m):
    cut = 0
    for x in a:
        cut += (x - 1) // m
    return cut <= k ok r = m m r a = list(map(int, input().split())) list(map(int, input().split())) a k = map(int, input().split()) map(int, input().split()) k l, r = 0, max(a) 0 l
n, k = map(int, input().split())
a = list(map(int, input().split()))

l, r = 0, max(a)

def ok(m):
    cut = 0
    for x in a:
        cut += (x - 1) // m
    return cut <= k

while r - l > 1:
    m = (l + r) // 2
    if ok(m):
        r = m
    else:
        l = m

print(r)