N, K = list(map(int, input().split()))
A = list(map(int, input().split()))
U = max(A)+1
L = 0


def can(x, K):
    ct = 0
    for i in range(N):
        ct += (A[i]-1)//x
    if ct <= K:
        return True
    else:
        return False


while U-L > 1:
    x = (U+L+1)//2
    if can(x, K):
        U = x
    else:
        L = x

print(U) N, K = list(map(int, input().split())) N list(map(int, input().split())) list 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 U = max(A)+1 U max(A)+1 max(A) max A 1 L = 0 L 0 def can(x, K):
    ct = 0
    for i in range(N):
        ct += (A[i]-1)//x
    if ct <= K:
        return True
    else:
        return False can ct = 0 ct 0 for i in range(N):
        ct += (A[i]-1)//x
     i range(N) range N ct += (A[i]-1)//x ct (A[i]-1)//x A[i]-1 A[i] A i 1 x if ct <= K:
        return True
    else:
        return False ct <= K ct K return True True return False False x x K K while U-L > 1:
    x = (U+L+1)//2
    if can(x, K):
        U = x
    else:
        L = x U-L > 1 U-L U L 1 x = (U+L+1)//2 x (U+L+1)//2 U+L+1 U+L U L 1 2 if can(x, K):
        U = x
    else:
        L = x can(x, K) can x K U = x U x L = x L x print(U) print U def can(x, K):
    ct = 0
    for i in range(N):
        ct += (A[i]-1)//x
    if ct <= K:
        return True
    else:
        return False def can(x, K):
    ct = 0
    for i in range(N):
        ct += (A[i]-1)//x
    if ct <= K:
        return True
    else:
        return False can L = x x L A = list(map(int, input().split())) list(map(int, input().split())) A U = x x U N, K = list(map(int, input().split())) list(map(int, input().split())) N U = max(A)+1 max(A)+1 U L = 0 0 L K = list(map(int, input().split())) list(map(int, input().split())) K x = (U+L+1)//2 (U+L+1)//2 x
N, K = list(map(int, input().split()))
A = list(map(int, input().split()))
U = max(A)+1
L = 0


def can(x, K):
    ct = 0
    for i in range(N):
        ct += (A[i]-1)//x
    if ct <= K:
        return True
    else:
        return False


while U-L > 1:
    x = (U+L+1)//2
    if can(x, K):
        U = x
    else:
        L = x

print(U)
