# 解答
N, K  = map(int, input().split())
A = list(map(int, input().split()))
A.sort(reverse=True)

def check(L):
  count = 0
  for a in A:
    if a <= L:
      break      
    count += (a-1)//L
    if count > K:
      return False

  return True

l = 0
r = A[0]

while r-l > 1:
  c = (r+l)//2
  if check(c):
    r = c
  else:
    l = c
print(r) 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 A.sort(reverse=True) A.sort A sort reverse=True reverse True def check(L):
  count = 0
  for a in A:
    if a <= L:
      break      
    count += (a-1)//L
    if count > K:
      return False

  return True check count = 0 count 0 for a in A:
    if a <= L:
      break      
    count += (a-1)//L
    if count > K:
      return False

   a A if a <= L:
      break      
     a <= L a L break count += (a-1)//L count (a-1)//L a-1 a 1 L if count > K:
      return False

   count > K count K return False False return True True L L l = 0 l 0 r = A[0] r A[0] A 0 while r-l > 1:
  c = (r+l)//2
  if check(c):
    r = c
  else:
    l = c r-l > 1 r-l r l 1 c = (r+l)//2 c (r+l)//2 r+l r l 2 if check(c):
    r = c
  else:
    l = c check(c) check c r = c r c l = c l c print(r) print r r = A[0] A[0] r c = (r+l)//2 (r+l)//2 c l = c c l l = 0 0 l K  = map(int, input().split()) map(int, input().split()) K r = c c r N, K  = map(int, input().split()) map(int, input().split()) N def check(L):
  count = 0
  for a in A:
    if a <= L:
      break      
    count += (a-1)//L
    if count > K:
      return False

  return True def check(L):
  count = 0
  for a in A:
    if a <= L:
      break      
    count += (a-1)//L
    if count > K:
      return False

  return True check A = list(map(int, input().split())) list(map(int, input().split())) A
# 解答
N, K  = map(int, input().split())
A = list(map(int, input().split()))
A.sort(reverse=True)

def check(L):
  count = 0
  for a in A:
    if a <= L:
      break      
    count += (a-1)//L
    if count > K:
      return False

  return True

l = 0
r = A[0]

while r-l > 1:
  c = (r+l)//2
  if check(c):
    r = c
  else:
    l = c
print(r)