/*
TASK:socks
LANG:C
*/
#include <stdio.h>
#define MAX 1100000000
struct socks {int br; double pr;} p[32];
int main ()
{
    int n,k;
    int i,j,tmp;
    double minmax=MAX,min=MAX,tmppr=0;
    scanf ("%d %d",&n,&k);
    p[0].br=1;
    for (i=1;i<=n;i++)
        {
         scanf ("%d",&tmp);
         p[i].br=p[i-1].br*tmp;
        }
    for (i=0;i<=n;i++)
        scanf ("%lf",&p[i].pr);
    tmp=0;
    for (i=n;i>=0;i--)
        {
         if (p[i].br>k) minmax=p[i].pr;
         if (p[i].br==k) 
            {
             printf ("%lf\n",p[i].pr);
             return 0;
            }
         if (p[i].br<k)
            {
             while (tmp+p[i].br<=k)
                   {
                    tmp+=p[i].br;
                    tmppr+=p[i].pr;
                   }  
             if (tmppr+p[i].pr<minmax) minmax=tmppr+p[i].pr;
             if (tmp==k) break;
             if (tmp>k) break;
            }
        }
    if (minmax<min) min=minmax;
    if (tmppr<min) min=tmppr;
    printf ("%.2lf\n",min);
    return 0;
}
