N,K = map(int,input().split())
A = list(map(int,input().split()))
if K==0:
    high = max(A)
else:
    low = 0
    high = 10**9
    while high-low>1:
        mid = (high+low)//2
        cnt = 0
        for i in range(N):
            if A[i]%mid==0:
                cnt += A[i]//mid-1
            else:
                cnt += A[i]//mid
        if K>=cnt:
            high = mid
        else:
            low = mid
print(high) 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 if K==0:
    high = max(A)
else:
    low = 0
    high = 10**9
    while high-low>1:
        mid = (high+low)//2
        cnt = 0
        for i in range(N):
            if A[i]%mid==0:
                cnt += A[i]//mid-1
            else:
                cnt += A[i]//mid
        if K>=cnt:
            high = mid
        else:
            low = mid K==0 K 0 high = max(A) high max(A) max A low = 0 low 0 high = 10**9 high 10**9 10 9 while high-low>1:
        mid = (high+low)//2
        cnt = 0
        for i in range(N):
            if A[i]%mid==0:
                cnt += A[i]//mid-1
            else:
                cnt += A[i]//mid
        if K>=cnt:
            high = mid
        else:
            low = mid high-low>1 high-low high low 1 mid = (high+low)//2 mid (high+low)//2 high+low high low 2 cnt = 0 cnt 0 for i in range(N):
            if A[i]%mid==0:
                cnt += A[i]//mid-1
            else:
                cnt += A[i]//mid
         i range(N) range N if A[i]%mid==0:
                cnt += A[i]//mid-1
            else:
                cnt += A[i]//mid
         A[i]%mid==0 A[i]%mid A[i] A i mid 0 cnt += A[i]//mid-1 cnt A[i]//mid-1 A[i]//mid A[i] A i mid 1 cnt += A[i]//mid cnt A[i]//mid A[i] A i mid if K>=cnt:
            high = mid
        else:
            low = mid K>=cnt K cnt high = mid high mid low = mid low mid print(high) print high high = max(A) max(A) high cnt += A[i]//mid-1 A[i]//mid-1 cnt cnt += A[i]//mid A[i]//mid cnt mid = (high+low)//2 (high+low)//2 mid N,K = map(int,input().split()) map(int,input().split()) N K = map(int,input().split()) map(int,input().split()) K high = 10**9 10**9 high cnt = 0 0 cnt A = list(map(int,input().split())) list(map(int,input().split())) A low = 0 0 low high = mid mid high low = mid mid low
N,K = map(int,input().split())
A = list(map(int,input().split()))
if K==0:
    high = max(A)
else:
    low = 0
    high = 10**9
    while high-low>1:
        mid = (high+low)//2
        cnt = 0
        for i in range(N):
            if A[i]%mid==0:
                cnt += A[i]//mid-1
            else:
                cnt += A[i]//mid
        if K>=cnt:
            high = mid
        else:
            low = mid
print(high)