/*
TASK:socks
LANG:C++
*/

#include <iostream>
#include <stdio.h>
using namespace std;
int n,min_i;
float pr[100],sol=0;
long long pack[100],k,a;
int main()
{
    pack[0]=1;
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
            cin>>a;
            pack[i]=a*pack[i-1];
    }
    for(int j=0;j<=n;j++)
            cin>>pr[j];    
    while(k>0)
    {
              min_i=n;
                  for(int i=n;i>0;i--)
                             if(pack[i]>=k && pr[min_i]>pr[i]) min_i=i;
              k-=pack[min_i];
              sol+=pr[min_i];
    }
    sol*=100;
    cout<<int(sol)/100<<".";
    int z=int(sol)%100;
    if(z<10) cout<<0;
    cout<<z<<endl;
    
    //    system("PAUSE");
    return 0;
}
