n,k = map(int,input().split())
L = list(map(int,input().split()))
ok = 0
ng = 10**9
while abs(ok-ng) > 1:
    mid = (ok+ng)//2
    cur = 0
    for i in range(n):
        cur += L[i]//mid
    if cur > k:
        ok = mid
    elif cur <= k:
        ng = mid
K = [mid-1, mid, mid+1]
P = []
for i in range(3):
    res = 0
    if K[i] > 0:
        for j in range(n):
            res += (L[j]-1)//K[i]
        if res <= k:
            P.append(K[i])
print(min(P)) n,k = map(int,input().split()) n map(int,input().split()) map int input().split() ().split () input split k L = list(map(int,input().split())) L list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split ok = 0 ok 0 ng = 10**9 ng 10**9 10 9 while abs(ok-ng) > 1:
    mid = (ok+ng)//2
    cur = 0
    for i in range(n):
        cur += L[i]//mid
    if cur > k:
        ok = mid
    elif cur <= k:
        ng = mid abs(ok-ng) > 1 abs(ok-ng) abs ok-ng ok ng 1 mid = (ok+ng)//2 mid (ok+ng)//2 ok+ng ok ng 2 cur = 0 cur 0 for i in range(n):
        cur += L[i]//mid
     i range(n) range n cur += L[i]//mid cur L[i]//mid L[i] L i mid if cur > k:
        ok = mid
    elif cur <= k:
        ng = mid cur > k cur k ok = mid ok mid elif cur <= k:
        ng = mid cur <= k cur k ng = mid ng mid K = [mid-1, mid, mid+1] K [mid-1, mid, mid+1] mid-1 mid 1 mid mid+1 mid 1 P = [] P [] for i in range(3):
    res = 0
    if K[i] > 0:
        for j in range(n):
            res += (L[j]-1)//K[i]
        if res <= k:
            P.append(K[i]) i range(3) range 3 res = 0 res 0 if K[i] > 0:
        for j in range(n):
            res += (L[j]-1)//K[i]
        if res <= k:
            P.append(K[i]) K[i] > 0 K[i] K i 0 for j in range(n):
            res += (L[j]-1)//K[i]
         j range(n) range n res += (L[j]-1)//K[i] res (L[j]-1)//K[i] L[j]-1 L[j] L j 1 K[i] K i if res <= k:
            P.append(K[i]) res <= k res k P.append(K[i]) P.append P append K[i] K i print(min(P)) print min(P) min P ng = 10**9 10**9 ng mid = (ok+ng)//2 (ok+ng)//2 mid cur = 0 0 cur res = 0 0 res P = [] [] P ok = mid mid ok n,k = map(int,input().split()) map(int,input().split()) n L = list(map(int,input().split())) list(map(int,input().split())) L ok = 0 0 ok k = map(int,input().split()) map(int,input().split()) k res += (L[j]-1)//K[i] (L[j]-1)//K[i] res ng = mid mid ng K = [mid-1, mid, mid+1] [mid-1, mid, mid+1] K cur += L[i]//mid L[i]//mid cur
n,k = map(int,input().split())
L = list(map(int,input().split()))
ok = 0
ng = 10**9
while abs(ok-ng) > 1:
    mid = (ok+ng)//2
    cur = 0
    for i in range(n):
        cur += L[i]//mid
    if cur > k:
        ok = mid
    elif cur <= k:
        ng = mid
K = [mid-1, mid, mid+1]
P = []
for i in range(3):
    res = 0
    if K[i] > 0:
        for j in range(n):
            res += (L[j]-1)//K[i]
        if res <= k:
            P.append(K[i])
print(min(P))
