#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,x;
cin>>n>>x;
int arr[n+1],cost[n+1];
pair <float, int > harga[n+1]; //cost number
harga[0]= make_pair(-9,-9);
for(int i=1;i<=n;i++)
{
cin>>arr[i];
}
for(int i=1;i<=n;i++)
{
cin>>cost[i];
double yo=cost[i];
harga[i] = make_pair (yo/arr[i],i);
}
sort(harga,harga+n+1);
int now=n;
double pantek=0;
while(true)
{
if ( (now==0) or (x==0) )
{
break;
}
if(x>=arr[harga[now].second])
{
pantek+= cost[harga[now].second];
x-= arr[harga[now].second];
}
else
{
double tambah;
tambah = x*harga[now].first;
pantek+= tambah;
x = 0;
}
now--;
}
cout<< fixed << setprecision(5)<< pantek<<"\n";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG1haW4oKQp7CglpbnQgbix4OwoJY2luPj5uPj54OwoJCglpbnQgYXJyW24rMV0sY29zdFtuKzFdOwoJcGFpciA8ZmxvYXQsIGludCA+IGhhcmdhW24rMV07IC8vY29zdCBudW1iZXIKCQoJaGFyZ2FbMF09IG1ha2VfcGFpcigtOSwtOSk7CgkKCWZvcihpbnQgaT0xO2k8PW47aSsrKQoJewoJCWNpbj4+YXJyW2ldOwoJfQoJCglmb3IoaW50IGk9MTtpPD1uO2krKykKCXsKCQljaW4+PmNvc3RbaV07CgkJZG91YmxlIHlvPWNvc3RbaV07CgkJaGFyZ2FbaV0gPSBtYWtlX3BhaXIgKHlvL2FycltpXSxpKTsKCX0KCQoJc29ydChoYXJnYSxoYXJnYStuKzEpOwoJCglpbnQgbm93PW47Cglkb3VibGUgcGFudGVrPTA7Cgl3aGlsZSh0cnVlKQoJewoJCQoJCWlmICggKG5vdz09MCkgb3IgKHg9PTApICkKCQl7CgkJCWJyZWFrOwoJCX0KCQkKCQlpZih4Pj1hcnJbaGFyZ2Fbbm93XS5zZWNvbmRdKQoJCXsKCQkJcGFudGVrKz0gY29zdFtoYXJnYVtub3ddLnNlY29uZF07CgkJCXgtPSBhcnJbaGFyZ2Fbbm93XS5zZWNvbmRdOwoJCX0KCQllbHNlCgkJewoJCQlkb3VibGUgdGFtYmFoOwoJCQl0YW1iYWggPSB4KmhhcmdhW25vd10uZmlyc3Q7CgkJCXBhbnRlays9IHRhbWJhaDsKCQkJeCA9IDA7CgkJfQoJCQoJCW5vdy0tOwoJfQoJCgljb3V0PDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDUpPDwgcGFudGVrPDwiXG4iOwoJcmV0dXJuIDA7Cn0=