N,K = list(map(int,input().split()))
A = list(map(int,input().split()))
 
NG=0
OK=max(A)+1
 
while OK-NG>1:
    mid = (OK+NG)//2
    cur=0
    for x in A:
        cur += (x-1)//mid
    if cur > K:
        NG=mid
    else:
        OK=mid
print(OK) 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 NG=0 NG 0 OK=max(A)+1 OK max(A)+1 max(A) max A 1 while OK-NG>1:
    mid = (OK+NG)//2
    cur=0
    for x in A:
        cur += (x-1)//mid
    if cur > K:
        NG=mid
    else:
        OK=mid OK-NG>1 OK-NG OK NG 1 mid = (OK+NG)//2 mid (OK+NG)//2 OK+NG OK NG 2 cur=0 cur 0 for x in A:
        cur += (x-1)//mid
     x A cur += (x-1)//mid cur (x-1)//mid x-1 x 1 mid if cur > K:
        NG=mid
    else:
        OK=mid cur > K cur K NG=mid NG mid OK=mid OK mid print(OK) print OK K = list(map(int,input().split())) list(map(int,input().split())) K mid = (OK+NG)//2 (OK+NG)//2 mid A = list(map(int,input().split())) list(map(int,input().split())) A cur += (x-1)//mid (x-1)//mid cur OK=mid mid OK NG=0 0 NG cur=0 0 cur N,K = list(map(int,input().split())) list(map(int,input().split())) N OK=max(A)+1 max(A)+1 OK NG=mid mid NG
N,K = list(map(int,input().split()))
A = list(map(int,input().split()))
 
NG=0
OK=max(A)+1
 
while OK-NG>1:
    mid = (OK+NG)//2
    cur=0
    for x in A:
        cur += (x-1)//mid
    if cur > K:
        NG=mid
    else:
        OK=mid
print(OK)