n, k = [int(x) for x in input().split()]
arr = [int(x) for x in input().split()]
low, high = 0, max(arr) + 1
while high - low > 1:
  mid = (high + low) // 2
  curr = 0
  for i in arr:
    curr += (i - 1)//mid
  if curr > k:
    low = mid
  else:
    high =  mid
print(high)     int(x) for x in input().split() for x in input().split() x input().split() ().split () input split for x in input().split() int(x) int x n, k = [int(x) for x in input().split()] n [int(x) for x in input().split()] k int(x) for x in input().split() for x in input().split() x input().split() ().split () input split for x in input().split() int(x) int x arr = [int(x) for x in input().split()] arr [int(x) for x in input().split()] low, high = 0, max(arr) + 1 low 0 high max(arr) + 1 max(arr) max arr 1 while high - low > 1:
  mid = (high + low) // 2
  curr = 0
  for i in arr:
    curr += (i - 1)//mid
  if curr > k:
    low = mid
  else:
    high =  mid high - low > 1 high - low high low 1 mid = (high + low) // 2 mid (high + low) // 2 high + low high low 2 curr = 0 curr 0 for i in arr:
    curr += (i - 1)//mid
   i arr curr += (i - 1)//mid curr (i - 1)//mid i - 1 i 1 mid if curr > k:
    low = mid
  else:
    high =  mid curr > k curr k low = mid low mid high =  mid high mid print(high) print high n, k = [int(x) for x in input().split()] [int(x) for x in input().split()] n high = 0, max(arr) + 1 max(arr) + 1 high mid = (high + low) // 2 (high + low) // 2 mid arr = [int(x) for x in input().split()] [int(x) for x in input().split()] arr low, high = 0, max(arr) + 1 0 low k = [int(x) for x in input().split()] [int(x) for x in input().split()] k curr = 0 0 curr low = mid mid low high =  mid mid high curr += (i - 1)//mid (i - 1)//mid curr
n, k = [int(x) for x in input().split()]
arr = [int(x) for x in input().split()]
low, high = 0, max(arr) + 1
while high - low > 1:
  mid = (high + low) // 2
  curr = 0
  for i in arr:
    curr += (i - 1)//mid
  if curr > k:
    low = mid
  else:
    high =  mid
print(high)    