N, K = gets.chomp.split.map(&:to_i)
A = gets.chomp.split.map(&:to_i)
F = gets.chomp.split.map(&:to_i)

A.sort!
F.sort!.reverse!

def s(p)
  sum = 0
  N.times do |i|
    u = (A[i] - (p.to_f / F[i])).ceil
    sum += u if u > 0
  end
  return false if sum > K
  true
end

p (0..10**12).bsearch { |p| s(p) }