from math import *

f=lambda:[*list(map(int,input().split()))]

n,k=f()

a=f()

def ok(x):

  c=0

  for i in a:

    c+=ceil(i/x)

  return c<=n+k

l,r=0,10**9

while r-l>1:

  m=(l+r)/2

  if ok(m): r=m

  else: l=m

t=ceil(r)

print((t-ok(t-1) if t>1 else t))
f=lambda:[*list(map(int,input().split()))]

n,k=f()

a=f()

def ok(x):

  c=0

  for i in a:

    c+=0--i//x

  return c<=n+k

l,r=0,10**9

while r-l>1:

  m=l+r>>1

  if ok(m): r=m

  else: l=m

print(r)
from math import *

f = lambda: [*list(map(int, input().split()))]
n, k = f()
a = f()


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


l, r = 0, 10**9
while r - l > 1:
    m = (l + r) / 2
    if ok(m):
        r = m
    else:
        l = m
t = ceil(r)
print((t - ok(t - 1) if t > 1 else t))

f = lambda: [*list(map(int, input().split()))]
n, k = f()
a = f()


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


l, r = 0, 10**9
while r - l > 1:
    m = l + r >> 1
    if ok(m):
        r = m
    else:
        l = m
print(r)

-from math import * - -        c += ceil(i / x) +        c += 0 - -i // x -    m = (l + r) / 2 +    m = l + r >> 1 -t = ceil(r) -print((t - ok(t - 1) if t > 1 else t)) +print(r)