N, K = map(int, input().split())
A = list(map(int, input().split()))
left = 0
right = max(A)
while(right - left > 1 and K != 0):
    x = (right + left) // 2
    def min_cut(x: int):
        n = 0
        for a in A:
            n += (a - 1) // x
        return n <= K
    if min_cut(x):
        right = x
    else:
        left = x
print(right) 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 left = 0 left 0 right = max(A) right max(A) max A while(right - left > 1 and K != 0):
    x = (right + left) // 2
    def min_cut(x: int):
        n = 0
        for a in A:
            n += (a - 1) // x
        return n <= K
    if min_cut(x):
        right = x
    else:
        left = x right - left > 1 and K != 0 right - left > 1 right - left right left 1 K != 0 K 0 x = (right + left) // 2 x (right + left) // 2 right + left right left 2 def min_cut(x: int):
        n = 0
        for a in A:
            n += (a - 1) // x
        return n <= K
     min_cut n = 0 n 0 for a in A:
            n += (a - 1) // x
         a A n += (a - 1) // x n (a - 1) // x a - 1 a 1 x return n <= K n <= K n K x: int x if min_cut(x):
        right = x
    else:
        left = x min_cut(x) min_cut x right = x right x left = x left x print(right) print right left = 0 0 left right = max(A) max(A) right left = x x left N, K = map(int, input().split()) map(int, input().split()) N right = x x right K = map(int, input().split()) map(int, input().split()) K A = list(map(int, input().split())) list(map(int, input().split())) A x = (right + left) // 2 (right + left) // 2 x def min_cut(x: int):
        n = 0
        for a in A:
            n += (a - 1) // x
        return n <= K
     def min_cut(x: int):
        n = 0
        for a in A:
            n += (a - 1) // x
        return n <= K
     min_cut
N, K = map(int, input().split())
A = list(map(int, input().split()))
left = 0
right = max(A)
while(right - left > 1 and K != 0):
    x = (right + left) // 2
    def min_cut(x: int):
        n = 0
        for a in A:
            n += (a - 1) // x
        return n <= K
    if min_cut(x):
        right = x
    else:
        left = x
print(right)