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

l = 0
r = max(a)

while r - l > 1:
    cnt = 0
    mid = (r + l) // 2
    for i in range(n):
        d = (a[i] // mid) + (a[i] % mid != 0) - 1
        cnt += d
    if cnt <= k: 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 l = 0 l 0 r = max(a) r max(a) max a while r - l > 1:
    cnt = 0
    mid = (r + l) // 2
    for i in range(n):
        d = (a[i] // mid) + (a[i] % mid != 0) - 1
        cnt += d
    if cnt <= k: r = mid
    else: l = mid  r - l > 1 r - l r l 1 cnt = 0 cnt 0 mid = (r + l) // 2 mid (r + l) // 2 r + l r l 2 for i in range(n):
        d = (a[i] // mid) + (a[i] % mid != 0) - 1
        cnt += d
     i range(n) range n d = (a[i] // mid) + (a[i] % mid != 0) - 1 d (a[i] // mid) + (a[i] % mid != 0) - 1 (a[i] // mid) + (a[i] % mid != 0) a[i] // mid a[i] a i mid a[i] % mid != 0 a[i] % mid a[i] a i mid 0 1 cnt += d cnt d if cnt <= k: r = mid
    else: l = mid  cnt <= k cnt k print(r) print r a = list(map(int, input().split())) list(map(int, input().split())) a n, k = map(int, input().split()) map(int, input().split()) n k = map(int, input().split()) map(int, input().split()) k r = max(a) max(a) r mid = (r + l) // 2 (r + l) // 2 mid d = (a[i] // mid) + (a[i] % mid != 0) - 1 (a[i] // mid) + (a[i] % mid != 0) - 1 d cnt = 0 0 cnt cnt += d d cnt l = 0 0 l
n, k = map(int, input().split())
a = list(map(int, input().split()))

l = 0
r = max(a)

while r - l > 1:
    cnt = 0
    mid = (r + l) // 2
    for i in range(n):
        d = (a[i] // mid) + (a[i] % mid != 0) - 1
        cnt += d
    if cnt <= k: r = mid
    else: l = mid 

print(r)