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

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

ng = 0
ok = 10 ** 9 + 1

def check(x):
    cnt = 0
    for l in a:
        cnt += (l-1)//x
    return cnt <= k

while abs(ok-ng) > 1:
    m = (ok + ng) // 2
    if check(m):
        ok = m
    else:
        ng = m

print(ok) 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 ng = 0 ng 0 ok = 10 ** 9 + 1 ok 10 ** 9 + 1 10 ** 9 10 9 1 def check(x):
    cnt = 0
    for l in a:
        cnt += (l-1)//x
    return cnt <= k check cnt = 0 cnt 0 for l in a:
        cnt += (l-1)//x
     l a cnt += (l-1)//x cnt (l-1)//x l-1 l 1 x return cnt <= k cnt <= k cnt k x x while abs(ok-ng) > 1:
    m = (ok + ng) // 2
    if check(m):
        ok = m
    else:
        ng = m abs(ok-ng) > 1 abs(ok-ng) abs ok-ng ok ng 1 m = (ok + ng) // 2 m (ok + ng) // 2 ok + ng ok ng 2 if check(m):
        ok = m
    else:
        ng = m check(m) check m ok = m ok m ng = m ng m print(ok) print ok n, k = map(int, input().split()) map(int, input().split()) n ng = 0 0 ng k = map(int, input().split()) map(int, input().split()) k ok = m m ok m = (ok + ng) // 2 (ok + ng) // 2 m ok = 10 ** 9 + 1 10 ** 9 + 1 ok a = list(map(int, input().split())) list(map(int, input().split())) a def check(x):
    cnt = 0
    for l in a:
        cnt += (l-1)//x
    return cnt <= k def check(x):
    cnt = 0
    for l in a:
        cnt += (l-1)//x
    return cnt <= k check ng = m m ng
n, k = map(int, input().split())

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

ng = 0
ok = 10 ** 9 + 1

def check(x):
    cnt = 0
    for l in a:
        cnt += (l-1)//x
    return cnt <= k

while abs(ok-ng) > 1:
    m = (ok + ng) // 2
    if check(m):
        ok = m
    else:
        ng = m

print(ok)