import math
import sys
sys.setrecursionlimit(10**8)
n, k = map(int, input().split())
a = list(map(int, input().split()))
def binary_search(left, right):
    if right - left <= 0.01:
        return right
    middle = (right + left) / 2
    if is_can(middle):
        return binary_search(left, middle)
    else:
        return binary_search(middle, right)
def is_can(target):
    count = 0
    for i in range(n):
        if a[i] > target:
            count += a[i] // target
    return count <= k
p = binary_search(0, 10**10)
if int(p) != 0 and is_can(int(p)) :
    print(int(p))
else:
    print(int(p) + 1) import math math import sys sys sys.setrecursionlimit(10**8) sys.setrecursionlimit sys setrecursionlimit 10**8 10 8 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 def binary_search(left, right):
    if right - left <= 0.01:
        return right
    middle = (right + left) / 2
    if is_can(middle):
        return binary_search(left, middle)
    else:
        return binary_search(middle, right) binary_search if right - left <= 0.01:
        return right
     right - left <= 0.01 right - left right left 0.01 return right right middle = (right + left) / 2 middle (right + left) / 2 right + left right left 2 if is_can(middle):
        return binary_search(left, middle)
    else:
        return binary_search(middle, right) is_can(middle) is_can middle return binary_search(left, middle) binary_search(left, middle) binary_search left middle return binary_search(middle, right) binary_search(middle, right) binary_search middle right left left right right def is_can(target):
    count = 0
    for i in range(n):
        if a[i] > target:
            count += a[i] // target
    return count <= k is_can count = 0 count 0 for i in range(n):
        if a[i] > target:
            count += a[i] // target
     i range(n) range n if a[i] > target:
            count += a[i] // target
     a[i] > target a[i] a i target count += a[i] // target count a[i] // target a[i] a i target return count <= k count <= k count k target target p = binary_search(0, 10**10) p binary_search(0, 10**10) binary_search 0 10**10 10 10 if int(p) != 0 and is_can(int(p)) :
    print(int(p))
else:
    print(int(p) + 1) int(p) != 0 and is_can(int(p)) int(p) != 0 int(p) int p 0 is_can(int(p)) is_can int(p) int p print(int(p)) print int(p) int p print(int(p) + 1) print int(p) + 1 int(p) int p 1 a = list(map(int, input().split())) list(map(int, input().split())) a n, k = map(int, input().split()) map(int, input().split()) n def is_can(target):
    count = 0
    for i in range(n):
        if a[i] > target:
            count += a[i] // target
    return count <= k def is_can(target):
    count = 0
    for i in range(n):
        if a[i] > target:
            count += a[i] // target
    return count <= k is_can k = map(int, input().split()) map(int, input().split()) k def binary_search(left, right):
    if right - left <= 0.01:
        return right
    middle = (right + left) / 2
    if is_can(middle):
        return binary_search(left, middle)
    else:
        return binary_search(middle, right) def binary_search(left, right):
    if right - left <= 0.01:
        return right
    middle = (right + left) / 2
    if is_can(middle):
        return binary_search(left, middle)
    else:
        return binary_search(middle, right) binary_search p = binary_search(0, 10**10) binary_search(0, 10**10) p
import math
import sys
sys.setrecursionlimit(10**8)
n, k = map(int, input().split())
a = list(map(int, input().split()))
def binary_search(left, right):
    if right - left <= 0.01:
        return right
    middle = (right + left) / 2
    if is_can(middle):
        return binary_search(left, middle)
    else:
        return binary_search(middle, right)
def is_can(target):
    count = 0
    for i in range(n):
        if a[i] > target:
            count += a[i] // target
    return count <= k
p = binary_search(0, 10**10)
if int(p) != 0 and is_can(int(p)) :
    print(int(p))
else:
    print(int(p) + 1)
