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

left = 0
right = 10**9

while right - left > 1:
  
  mid = (left + right) // 2
  
  cut = 0
  for i in range(n):
    cut += -(log[i]//-mid)-1

  if cut > k:
    left = mid
  else:
    right = mid
    
print(right) n, k = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split k log = list(map(int, input().split())) log list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split left = 0 left 0 right = 10**9 right 10**9 10 9 while right - left > 1:
  
  mid = (left + right) // 2
  
  cut = 0
  for i in range(n):
    cut += -(log[i]//-mid)-1

  if cut > k:
    left = mid
  else:
    right = mid
     right - left > 1 right - left right left 1 mid = (left + right) // 2 mid (left + right) // 2 left + right left right 2 cut = 0 cut 0 for i in range(n):
    cut += -(log[i]//-mid)-1

   i range(n) range n cut += -(log[i]//-mid)-1 cut -(log[i]//-mid)-1 -(log[i]//-mid) log[i]//-mid log[i] log i -mid mid 1 if cut > k:
    left = mid
  else:
    right = mid
     cut > k cut k left = mid left mid right = mid right mid print(right) print right k = map(int, input().split()) map(int, input().split()) k left = 0 0 left right = mid mid right right = 10**9 10**9 right left = mid mid left n, k = map(int, input().split()) map(int, input().split()) n cut = 0 0 cut cut += -(log[i]//-mid)-1 -(log[i]//-mid)-1 cut log = list(map(int, input().split())) list(map(int, input().split())) log mid = (left + right) // 2 (left + right) // 2 mid
n, k = map(int, input().split())
log = list(map(int, input().split()))

left = 0
right = 10**9

while right - left > 1:
  
  mid = (left + right) // 2
  
  cut = 0
  for i in range(n):
    cut += -(log[i]//-mid)-1

  if cut > k:
    left = mid
  else:
    right = mid
    
print(right)