n,k=map(int,input().split())
a=list(map(int,input().split()))
ng=0
ok=10**10
while ok-ng>1:
  m=(ok+ng)//2
  c=0
  for i in a:
    c+=(i//m-(i%m==0))
  if c<=k:
    ok=m
  else:
    ng=m
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=10**10 ok 10**10 10 10 while ok-ng>1:
  m=(ok+ng)//2
  c=0
  for i in a:
    c+=(i//m-(i%m==0))
  if c<=k:
    ok=m
  else:
    ng=m ok-ng>1 ok-ng ok ng 1 m=(ok+ng)//2 m (ok+ng)//2 ok+ng ok ng 2 c=0 c 0 for i in a:
    c+=(i//m-(i%m==0))
   i a c+=(i//m-(i%m==0)) c i//m-(i%m==0) i//m i m i%m==0 i%m i m 0 if c<=k:
    ok=m
  else:
    ng=m c<=k c k ok=m ok m ng=m ng m print(ok) print ok ng=0 0 ng n,k=map(int,input().split()) map(int,input().split()) n k=map(int,input().split()) map(int,input().split()) k ng=m m ng a=list(map(int,input().split())) list(map(int,input().split())) a ok=10**10 10**10 ok c=0 0 c ok=m m ok m=(ok+ng)//2 (ok+ng)//2 m c+=(i//m-(i%m==0)) i//m-(i%m==0) c
n,k=map(int,input().split())
a=list(map(int,input().split()))
ng=0
ok=10**10
while ok-ng>1:
  m=(ok+ng)//2
  c=0
  for i in a:
    c+=(i//m-(i%m==0))
  if c<=k:
    ok=m
  else:
    ng=m
print(ok)