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

n,k=f()

a=f()

a=[i*100 for i in a]

# Binary Search

def ok(x):

    c=0

    for i in a:

      c+=0--i//x

    return c<=n+k

l,r=0,10**11+1

while r-l>1:

  m=l+r>>1

  if ok(m): r=m

  else: l=m

t=0--r//100

print((t-ok(t-1) if t>1 else t))
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+1

while r-l>0.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()
a = [i * 100 for i in a]
# Binary Search
def ok(x):
    c = 0
    for i in a:
        c += 0 - -i // x
    return c <= n + k


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

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 + 1
while r - l > 0.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))

+from math import * + -a = [i * 100 for i in a] -# Binary Search + + -        c += 0 - -i // x +        c += ceil(i / x) -l, r = 0, 10**11 + 1 -while r - l > 1: -    m = l + r >> 1 +l, r = 0, 10**9 + 1 +while r - l > 0.1: +    m = (l + r) / 2 -t = 0 - -r // 100 +t = ceil(r)