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

ng = 0
ok = max(A)

while ok - ng > 1:
    cnt = 0
    l = (ok + ng) // 2
    for a in A:
        cnt += (a // l) + (a % l != 0) - 1

    if cnt <= K:
        ok = l
    else:
        ng = l
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 = max(A) ok max(A) max A while ok - ng > 1:
    cnt = 0
    l = (ok + ng) // 2
    for a in A:
        cnt += (a // l) + (a % l != 0) - 1

    if cnt <= K:
        ok = l
    else:
        ng = l ok - ng > 1 ok - ng ok ng 1 cnt = 0 cnt 0 l = (ok + ng) // 2 l (ok + ng) // 2 ok + ng ok ng 2 for a in A:
        cnt += (a // l) + (a % l != 0) - 1

     a A cnt += (a // l) + (a % l != 0) - 1 cnt (a // l) + (a % l != 0) - 1 (a // l) + (a % l != 0) a // l a l a % l != 0 a % l a l 0 1 if cnt <= K:
        ok = l
    else:
        ng = l cnt <= K cnt K ok = l ok l ng = l ng l print(ok) print ok K = map(int, input().split()) map(int, input().split()) K ng = l l ng cnt += (a // l) + (a % l != 0) - 1 (a // l) + (a % l != 0) - 1 cnt cnt = 0 0 cnt ng = 0 0 ng A = list(map(int, input().split())) list(map(int, input().split())) A N, K = map(int, input().split()) map(int, input().split()) N ok = l l ok ok = max(A) max(A) ok l = (ok + ng) // 2 (ok + ng) // 2 l
N, K = map(int, input().split())
A = list(map(int, input().split()))

ng = 0
ok = max(A)

while ok - ng > 1:
    cnt = 0
    l = (ok + ng) // 2
    for a in A:
        cnt += (a // l) + (a % l != 0) - 1

    if cnt <= K:
        ok = l
    else:
        ng = l
print(ok)