#!/usr/bin/env python

n, k = map(int, input().split())
a = list(map(int ,input().split()))

def check(x):
    now = 0 
    for i in range(n):
        now += (a[i]-1)//x
    return now <= k

l = 0 
r = int(1e9)
while r-l > 1:
    mid = (l+r)//2

    if check(mid):
        r = mid 
    else:
        l = mid 

print(r) 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 check(x):
    now = 0 
    for i in range(n):
        now += (a[i]-1)//x
    return now <= k check now = 0 now 0 for i in range(n):
        now += (a[i]-1)//x
     i range(n) range n now += (a[i]-1)//x now (a[i]-1)//x a[i]-1 a[i] a i 1 x return now <= k now <= k now k x x l = 0 l 0 r = int(1e9) r int(1e9) int 1e9 while r-l > 1:
    mid = (l+r)//2

    if check(mid):
        r = mid 
    else:
        l = mid  r-l > 1 r-l r l 1 mid = (l+r)//2 mid (l+r)//2 l+r l r 2 if check(mid):
        r = mid 
    else:
        l = mid  check(mid) check mid r = mid r mid l = mid l mid print(r) print r l = 0 0 l l = mid mid l n, k = map(int, input().split()) map(int, input().split()) n r = int(1e9) int(1e9) r mid = (l+r)//2 (l+r)//2 mid k = map(int, input().split()) map(int, input().split()) k def check(x):
    now = 0 
    for i in range(n):
        now += (a[i]-1)//x
    return now <= k def check(x):
    now = 0 
    for i in range(n):
        now += (a[i]-1)//x
    return now <= k check r = mid mid r a = list(map(int ,input().split())) list(map(int ,input().split())) a
#!/usr/bin/env python

n, k = map(int, input().split())
a = list(map(int ,input().split()))

def check(x):
    now = 0 
    for i in range(n):
        now += (a[i]-1)//x
    return now <= k

l = 0 
r = int(1e9)
while r-l > 1:
    mid = (l+r)//2

    if check(mid):
        r = mid 
    else:
        l = mid 

print(r)