n, k = gets.split.map(&:to_i)
as = gets.split.map(&:to_i)

l = 1
r = 1_000_000_000

# mについて煮豚して、切った結果の最長が m以下になるかを見る
while l < r
  m = (l + r) / 2
  x = k

  i = 0
  while x >= 0 && i < n
    t = ((as[i] + m - 1) / m)
    x -= (t - 1)
    i += 1
  end

  if x >= 0
    r = m
  else
    l = m + 1
  end
end


p l
