N, K = map(int, input().split())
logs = list(map(int, input().split()))
maxL = max(logs)

minz = 0
maxz = maxL+1
while minz < maxz-1:
    midz = (maxz + minz)//2
    ncut = 0
    for i in range(N):
        thiscut = int((logs[i] + midz - 1) / midz) - 1
        ncut += thiscut

    if ncut > K:
        minz = midz
    else:
        maxz = midz

print(maxz) N, K = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split K logs = list(map(int, input().split())) logs list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split maxL = max(logs) maxL max(logs) max logs minz = 0 minz 0 maxz = maxL+1 maxz maxL+1 maxL 1 while minz < maxz-1:
    midz = (maxz + minz)//2
    ncut = 0
    for i in range(N):
        thiscut = int((logs[i] + midz - 1) / midz) - 1
        ncut += thiscut

    if ncut > K:
        minz = midz
    else:
        maxz = midz minz < maxz-1 minz maxz-1 maxz 1 midz = (maxz + minz)//2 midz (maxz + minz)//2 maxz + minz maxz minz 2 ncut = 0 ncut 0 for i in range(N):
        thiscut = int((logs[i] + midz - 1) / midz) - 1
        ncut += thiscut

     i range(N) range N thiscut = int((logs[i] + midz - 1) / midz) - 1 thiscut int((logs[i] + midz - 1) / midz) - 1 int((logs[i] + midz - 1) / midz) int (logs[i] + midz - 1) / midz logs[i] + midz - 1 logs[i] + midz logs[i] logs i midz 1 midz 1 ncut += thiscut ncut thiscut if ncut > K:
        minz = midz
    else:
        maxz = midz ncut > K ncut K minz = midz minz midz maxz = midz maxz midz print(maxz) print maxz N, K = map(int, input().split()) map(int, input().split()) N midz = (maxz + minz)//2 (maxz + minz)//2 midz ncut = 0 0 ncut K = map(int, input().split()) map(int, input().split()) K maxz = maxL+1 maxL+1 maxz minz = 0 0 minz ncut += thiscut thiscut ncut maxL = max(logs) max(logs) maxL thiscut = int((logs[i] + midz - 1) / midz) - 1 int((logs[i] + midz - 1) / midz) - 1 thiscut maxz = midz midz maxz logs = list(map(int, input().split())) list(map(int, input().split())) logs minz = midz midz minz
N, K = map(int, input().split())
logs = list(map(int, input().split()))
maxL = max(logs)

minz = 0
maxz = maxL+1
while minz < maxz-1:
    midz = (maxz + minz)//2
    ncut = 0
    for i in range(N):
        thiscut = int((logs[i] + midz - 1) / midz) - 1
        ncut += thiscut

    if ncut > K:
        minz = midz
    else:
        maxz = midz

print(maxz)