N,K=gets.split.map(&:to_i)
as=gets.split.map(&:to_i).sort
fs=gets.split.map(&:to_i).sort.reverse
ss=(0..N-1).to_a.map{|i|as[i]*fs[i]}
l=0
r=1e13.to_i
until (r-l)<=1
    check=(l+r)/2
    cnt=0
    N.times do |i|
        if check<=ss[i]
            cnt+=((ss[i]-check)+as[i]-1)/as[i]
        end
    end
    if cnt<K
        r=check
    else
        l=check
    end
end
puts l