def possible(x):
    global k
    cnt = 0
    for i in a:
        if i % x == 0:
            cnt += i // x - 1
        else:
            cnt += i // x

    if cnt <= k:
        return True
    return False

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

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

mini = 1
maxi = max(a)

while mini <= maxi:
    mid = (mini + maxi) // 2
    res = possible(mid)
    if res:
        maxi = mid
    else:
        mini = mid
    # print(mini, mid, maxi)

    if mini+1 >= maxi:
        if maxi < mini:
            mini, maxi = maxi, mini
        if possible(mini):
            ans = mini
        else:
            ans = maxi
        break

print(ans)
# print(possible(4))
 def possible(x):
    global k
    cnt = 0
    for i in a:
        if i % x == 0:
            cnt += i // x - 1
        else:
            cnt += i // x

    if cnt <= k:
        return True
    return False possible global k cnt = 0 cnt 0 for i in a:
        if i % x == 0:
            cnt += i // x - 1
        else:
            cnt += i // x

     i a if i % x == 0:
            cnt += i // x - 1
        else:
            cnt += i // x

     i % x == 0 i % x i x 0 cnt += i // x - 1 cnt i // x - 1 i // x i x 1 cnt += i // x cnt i // x i x if cnt <= k:
        return True
     cnt <= k cnt k return True True return False False x x 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 mini = 1 mini 1 maxi = max(a) maxi max(a) max a while mini <= maxi:
    mid = (mini + maxi) // 2
    res = possible(mid)
    if res:
        maxi = mid
    else:
        mini = mid
    # print(mini, mid, maxi)

    if mini+1 >= maxi:
        if maxi < mini:
            mini, maxi = maxi, mini
        if possible(mini):
            ans = mini
        else:
            ans = maxi
        break mini <= maxi mini maxi mid = (mini + maxi) // 2 mid (mini + maxi) // 2 mini + maxi mini maxi 2 res = possible(mid) res possible(mid) possible mid if res:
        maxi = mid
    else:
        mini = mid
    # print(mini, mid, maxi)

     res maxi = mid maxi mid mini = mid mini mid if mini+1 >= maxi:
        if maxi < mini:
            mini, maxi = maxi, mini
        if possible(mini):
            ans = mini
        else:
            ans = maxi
        break mini+1 >= maxi mini+1 mini 1 maxi if maxi < mini:
            mini, maxi = maxi, mini
         maxi < mini maxi mini mini, maxi = maxi, mini mini maxi maxi mini if possible(mini):
            ans = mini
        else:
            ans = maxi
         possible(mini) possible mini ans = mini ans mini ans = maxi ans maxi break print(ans) print ans k = map(int, input().split()) map(int, input().split()) k res = possible(mid) possible(mid) res ans = mini mini ans ans = maxi maxi ans def possible(x):
    global k
    cnt = 0
    for i in a:
        if i % x == 0:
            cnt += i // x - 1
        else:
            cnt += i // x

    if cnt <= k:
        return True
    return False def possible(x):
    global k
    cnt = 0
    for i in a:
        if i % x == 0:
            cnt += i // x - 1
        else:
            cnt += i // x

    if cnt <= k:
        return True
    return False possible n, k = map(int, input().split()) map(int, input().split()) n mid = (mini + maxi) // 2 (mini + maxi) // 2 mid maxi = maxi, mini mini maxi maxi = max(a) max(a) maxi maxi = mid mid maxi mini = mid mid mini mini = 1 1 mini a = list(map(int, input().split())) list(map(int, input().split())) a mini, maxi = maxi, mini maxi mini
def possible(x):
    global k
    cnt = 0
    for i in a:
        if i % x == 0:
            cnt += i // x - 1
        else:
            cnt += i // x

    if cnt <= k:
        return True
    return False

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

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

mini = 1
maxi = max(a)

while mini <= maxi:
    mid = (mini + maxi) // 2
    res = possible(mid)
    if res:
        maxi = mid
    else:
        mini = mid
    # print(mini, mid, maxi)

    if mini+1 >= maxi:
        if maxi < mini:
            mini, maxi = maxi, mini
        if possible(mini):
            ans = mini
        else:
            ans = maxi
        break

print(ans)
# print(possible(4))

