N, K = map(int, input().split())
A = list(map(int, input().split()))

def is_cuttable(N):
    n = 0
    for a in A:
        i = a // N
        if a % N == 0:
            i -= 1
        n += int(i)
        if n > K:
            return False
    return True

n_max = 10 ** 10
n_min = 0

while n_max - n_min > 1:
    n = (n_max + n_min) // 2
    if is_cuttable(n):
        n_max = n
    else:
        n_min = n
    
print(n_max) 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 is_cuttable(N):
    n = 0
    for a in A:
        i = a // N
        if a % N == 0:
            i -= 1
        n += int(i)
        if n > K:
            return False
    return True is_cuttable n = 0 n 0 for a in A:
        i = a // N
        if a % N == 0:
            i -= 1
        n += int(i)
        if n > K:
            return False
     a A i = a // N i a // N a N if a % N == 0:
            i -= 1
         a % N == 0 a % N a N 0 i -= 1 i 1 n += int(i) n int(i) int i if n > K:
            return False
     n > K n K return False False return True True N N n_max = 10 ** 10 n_max 10 ** 10 10 10 n_min = 0 n_min 0 while n_max - n_min > 1:
    n = (n_max + n_min) // 2
    if is_cuttable(n):
        n_max = n
    else:
        n_min = n
     n_max - n_min > 1 n_max - n_min n_max n_min 1 n = (n_max + n_min) // 2 n (n_max + n_min) // 2 n_max + n_min n_max n_min 2 if is_cuttable(n):
        n_max = n
    else:
        n_min = n
     is_cuttable(n) is_cuttable n n_max = n n_max n n_min = n n_min n print(n_max) print n_max N, K = map(int, input().split()) map(int, input().split()) N K = map(int, input().split()) map(int, input().split()) K n = (n_max + n_min) // 2 (n_max + n_min) // 2 n n_max = 10 ** 10 10 ** 10 n_max n_min = n n n_min A = list(map(int, input().split())) list(map(int, input().split())) A def is_cuttable(N):
    n = 0
    for a in A:
        i = a // N
        if a % N == 0:
            i -= 1
        n += int(i)
        if n > K:
            return False
    return True def is_cuttable(N):
    n = 0
    for a in A:
        i = a // N
        if a % N == 0:
            i -= 1
        n += int(i)
        if n > K:
            return False
    return True is_cuttable n_min = 0 0 n_min n_max = n n n_max
N, K = map(int, input().split())
A = list(map(int, input().split()))

def is_cuttable(N):
    n = 0
    for a in A:
        i = a // N
        if a % N == 0:
            i -= 1
        n += int(i)
        if n > K:
            return False
    return True

n_max = 10 ** 10
n_min = 0

while n_max - n_min > 1:
    n = (n_max + n_min) // 2
    if is_cuttable(n):
        n_max = n
    else:
        n_min = n
    
print(n_max)