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

def A(x):
    cnt = 0
    for i in range(n):
        if L[i]%x == 0:
            cnt +=L[i]//x-1
        else:
            cnt +=L[i]//x
    return cnt <= k

lower = 0
upper = max(L)

while upper - lower > 1:
    mid = (lower + upper)//2
    if A(mid):
        upper = mid
    else:
        lower = mid

print(upper) n,k = map(int,input().split()) n map(int,input().split()) map int input().split() ().split () input split k L = list(map(int,input().split())) L list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split def A(x):
    cnt = 0
    for i in range(n):
        if L[i]%x == 0:
            cnt +=L[i]//x-1
        else:
            cnt +=L[i]//x
    return cnt <= k A cnt = 0 cnt 0 for i in range(n):
        if L[i]%x == 0:
            cnt +=L[i]//x-1
        else:
            cnt +=L[i]//x
     i range(n) range n if L[i]%x == 0:
            cnt +=L[i]//x-1
        else:
            cnt +=L[i]//x
     L[i]%x == 0 L[i]%x L[i] L i x 0 cnt +=L[i]//x-1 cnt L[i]//x-1 L[i]//x L[i] L i x 1 cnt +=L[i]//x cnt L[i]//x L[i] L i x return cnt <= k cnt <= k cnt k x x lower = 0 lower 0 upper = max(L) upper max(L) max L while upper - lower > 1:
    mid = (lower + upper)//2
    if A(mid):
        upper = mid
    else:
        lower = mid upper - lower > 1 upper - lower upper lower 1 mid = (lower + upper)//2 mid (lower + upper)//2 lower + upper lower upper 2 if A(mid):
        upper = mid
    else:
        lower = mid A(mid) A mid upper = mid upper mid lower = mid lower mid print(upper) print upper lower = mid mid lower n,k = map(int,input().split()) map(int,input().split()) n mid = (lower + upper)//2 (lower + upper)//2 mid k = map(int,input().split()) map(int,input().split()) k upper = mid mid upper lower = 0 0 lower upper = max(L) max(L) upper L = list(map(int,input().split())) list(map(int,input().split())) L def A(x):
    cnt = 0
    for i in range(n):
        if L[i]%x == 0:
            cnt +=L[i]//x-1
        else:
            cnt +=L[i]//x
    return cnt <= k def A(x):
    cnt = 0
    for i in range(n):
        if L[i]%x == 0:
            cnt +=L[i]//x-1
        else:
            cnt +=L[i]//x
    return cnt <= k A
n,k = map(int,input().split())
L = list(map(int,input().split()))

def A(x):
    cnt = 0
    for i in range(n):
        if L[i]%x == 0:
            cnt +=L[i]//x-1
        else:
            cnt +=L[i]//x
    return cnt <= k

lower = 0
upper = max(L)

while upper - lower > 1:
    mid = (lower + upper)//2
    if A(mid):
        upper = mid
    else:
        lower = mid

print(upper)