from math import ceil

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

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

def c(x):

    cnt=0

    for i in a:

        cnt += i // x

    return cnt<=k

l, r = 0, max(a)

for i in range(100):

    mid = (l + r) / 2

    if c(mid):

        r = mid

    else:

        l = mid

print((ceil(l)))
n, k = list(map(int, input().split()))

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



def c(x):

    cnt=0

    for i in a:

        cnt += (i - 1) // x

    return cnt <= k

    

l, r = 0, max(a)

while l + 1 < r:

    mid = (l + r) // 2

    if c(mid):

        r = mid

    else:

        l = mid



print(r)
from math import ceil

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


def c(x):
    cnt = 0
    for i in a:
        cnt += i // x
    return cnt <= k


l, r = 0, max(a)
for i in range(100):
    mid = (l + r) / 2
    if c(mid):
        r = mid
    else:
        l = mid
print((ceil(l)))

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


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


l, r = 0, max(a)
while l + 1 < r:
    mid = (l + r) // 2
    if c(mid):
        r = mid
    else:
        l = mid
print(r)

-from math import ceil - -        cnt += i // x +        cnt += (i - 1) // x -for i in range(100): -    mid = (l + r) / 2 +while l + 1 < r: +    mid = (l + r) // 2 -print((ceil(l))) +print(r)