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

ng=0
ok=max(A)


while abs(ok-ng)>1:
    mid=(ok+ng)//2
    
    now=0
    for i in A:
        now+= i//mid-1 if i%mid==0 else i//mid
    if now> k :
        ng=mid
    else:
        ok=mid

print(ok) 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 ng=0 ng 0 ok=max(A) ok max(A) max A while abs(ok-ng)>1:
    mid=(ok+ng)//2
    
    now=0
    for i in A:
        now+= i//mid-1 if i%mid==0 else i//mid
    if now> k :
        ng=mid
    else:
        ok=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 now=0 now 0 for i in A:
        now+= i//mid-1 if i%mid==0 else i//mid
     i A now+= i//mid-1 if i%mid==0 else i//mid now i//mid-1 if i%mid==0 else i//mid i%mid==0 i%mid i mid 0 i//mid-1 i//mid i mid 1 i//mid i mid if now> k :
        ng=mid
    else:
        ok=mid now> k now k ng=mid ng mid ok=mid ok mid print(ok) print ok now+= i//mid-1 if i%mid==0 else i//mid i//mid-1 if i%mid==0 else i//mid now ng=mid mid ng ok=mid mid ok ng=0 0 ng ok=max(A) max(A) ok n,k=map(int,input().split()) map(int,input().split()) n now=0 0 now k=map(int,input().split()) 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
n,k=map(int,input().split())
A=list(map(int,input().split()))

ng=0
ok=max(A)


while abs(ok-ng)>1:
    mid=(ok+ng)//2
    
    now=0
    for i in A:
        now+= i//mid-1 if i%mid==0 else i//mid
    if now> k :
        ng=mid
    else:
        ok=mid

print(ok)