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 n,k = list(map(int,input().split())) list(map(int,input().split())) n ng=0 0 ng a = list(map(int,input().split())) list(map(int,input().split())) a cur+=(x-1)//mid (x-1)//mid cur ok=max(a)+1 max(a)+1 ok mid = (ok+ng)//2 (ok+ng)//2 mid ok=mid mid ok cur=0 0 cur 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)
