    n=io.read("*n")
    k=io.read("*k")
     
    a={}
    f={}
     
    for i=1, n do
      table.insert(a, io.read("*n"))
    end
    for i=1, n do
      table.insert(f, io.read("*n"))
    end
        
        table.sort(a)
        for i=1, n do
          if a[i]<k then
            a[i]=0
            k=k-a[i]
          elseif (not(k==0)) and a[i]>=k then
            a[i]=a[i]-k
            k=0
            break
          end
        end
        
        function maxpos(t, len)
          p=1
          for i=1,len do
            if t[i]>t[p] then
              p=i
            end
          end
        end
        function minpos(t, len)
          q=1
          for i=1,len do
            if t[i]<t[q] then
              q=i
            end
          end
        end
        v={}
        for i=1,n do
          v[i]=math.min(unpack(a))*math.max(unpack(f))
          table.remove(a, minpos(a, n)
          n=n-1
        end
          
        print(math.max(unpack(v)))