/*
TASK:socks
LANG:c++
*/
#include<iostream>
#include<stdio.h>

using namespace std;
int n;double sum=0;
unsigned long k;
double price[31];
int packets[31];
int main()
{ cin>>n>>k;
  int i;
  packets[0]=1;
  for(i=1;i<=n;i++)
   { int a;
     cin>>a;
     packets[i]=packets[i-1]*a;
   }
  for(i=0;i<=n;i++)
   cin>>price[i];
  unsigned long max=0;int pack=0;
  unsigned long kf=k;unsigned long socks=0;
  while(socks<=k)
  {  for(i=0;i<=n;i++)
      if(packets[i]>max&&packets[i]<kf){max=packets[i];pack=i;}
     sum+=price[pack];
     kf=packets[pack];
     socks+=packets[pack];
     max=0;
  }
  printf("%0.2f",sum);
         return 0;
}

