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

bottom, top = 0, max(A)

def cut(x):
    cnt = 0
    for Length in A:
        if Length % x == 0:
            cnt += Length // x
        else:
            cnt += Length // x + 1
        cnt -= 1
    return cnt <= k

while top - bottom > 1:
    middle = (top + bottom) // 2
    if cut(middle):
        top = middle
    else:
        bottom = middle
    
print(top) 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 bottom, top = 0, max(A) bottom 0 top max(A) max A def cut(x):
    cnt = 0
    for Length in A:
        if Length % x == 0:
            cnt += Length // x
        else:
            cnt += Length // x + 1
        cnt -= 1
    return cnt <= k cut cnt = 0 cnt 0 for Length in A:
        if Length % x == 0:
            cnt += Length // x
        else:
            cnt += Length // x + 1
        cnt -= 1
     Length A if Length % x == 0:
            cnt += Length // x
        else:
            cnt += Length // x + 1
         Length % x == 0 Length % x Length x 0 cnt += Length // x cnt Length // x Length x cnt += Length // x + 1 cnt Length // x + 1 Length // x Length x 1 cnt -= 1 cnt 1 return cnt <= k cnt <= k cnt k x x while top - bottom > 1:
    middle = (top + bottom) // 2
    if cut(middle):
        top = middle
    else:
        bottom = middle
     top - bottom > 1 top - bottom top bottom 1 middle = (top + bottom) // 2 middle (top + bottom) // 2 top + bottom top bottom 2 if cut(middle):
        top = middle
    else:
        bottom = middle
     cut(middle) cut middle top = middle top middle bottom = middle bottom middle print(top) print top top = middle middle top n, k = map(int, input().split()) map(int, input().split()) n A = list(map(int, input().split())) list(map(int, input().split())) A bottom = middle middle bottom bottom, top = 0, max(A) 0 bottom k = map(int, input().split()) map(int, input().split()) k def cut(x):
    cnt = 0
    for Length in A:
        if Length % x == 0:
            cnt += Length // x
        else:
            cnt += Length // x + 1
        cnt -= 1
    return cnt <= k def cut(x):
    cnt = 0
    for Length in A:
        if Length % x == 0:
            cnt += Length // x
        else:
            cnt += Length // x + 1
        cnt -= 1
    return cnt <= k cut middle = (top + bottom) // 2 (top + bottom) // 2 middle top = 0, max(A) max(A) top
n, k = map(int, input().split())
A = list(map(int, input().split()))

bottom, top = 0, max(A)

def cut(x):
    cnt = 0
    for Length in A:
        if Length % x == 0:
            cnt += Length // x
        else:
            cnt += Length // x + 1
        cnt -= 1
    return cnt <= k

while top - bottom > 1:
    middle = (top + bottom) // 2
    if cut(middle):
        top = middle
    else:
        bottom = middle
    
print(top)