#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n;
long long V;
cin>>n>>V;
vector<long long> v(n),c(n);
for(int i=0;i<n;i++){
cin>>v[i];}
for(int i=0;i<n;i++){
cin>>c[i];
}
vector<pair<double, int>> kromek;
kromek.reserve(n);
for(int i=0;i<n;i++){
if (v[i]>0){
kromek.push_back({(double)c[i]/v[i],i});
}}
sort(kromek.begin(),kromek.end(),greater<>());
double wynik=0.0;
long long capacity=V;
for (auto &p : kromek){
if (capacity==0){
break;}
int i=p.second;
if (v[i]<=capacity){
wynik+=c[i];
capacity-=v[i];}
else{
wynik+=p.first*capacity;
capacity=0;
}
}
cout<<fixed<<setprecision(7)<<wynik<<endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBpbnQgbjsKICAgIGxvbmcgbG9uZyBWOwogICAgY2luPj5uPj5WOwogICAgdmVjdG9yPGxvbmcgbG9uZz4gdihuKSxjKG4pOwogICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgY2luPj52W2ldO30KICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgIGNpbj4+Y1tpXTsKICAgIH0KICAgIHZlY3RvcjxwYWlyPGRvdWJsZSwgaW50Pj4ga3JvbWVrOwogICAga3JvbWVrLnJlc2VydmUobik7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICBpZiAodltpXT4wKXsKICAgICAgICAgICAga3JvbWVrLnB1c2hfYmFjayh7KGRvdWJsZSljW2ldL3ZbaV0saX0pOwogICAgICAgIH19CiAgICBzb3J0KGtyb21lay5iZWdpbigpLGtyb21lay5lbmQoKSxncmVhdGVyPD4oKSk7CiAgICBkb3VibGUgd3luaWs9MC4wOwogICAgbG9uZyBsb25nIGNhcGFjaXR5PVY7CiAgICBmb3IgKGF1dG8gJnAgOiBrcm9tZWspewogICAgICAgIGlmIChjYXBhY2l0eT09MCl7CiAgICAgICAgICAgIGJyZWFrO30KICAgICAgICBpbnQgaT1wLnNlY29uZDsKICAgICAgICBpZiAodltpXTw9Y2FwYWNpdHkpewogICAgICAgICAgICB3eW5pays9Y1tpXTsKICAgICAgICAgICAgY2FwYWNpdHktPXZbaV07fQogICAgICAgIGVsc2V7CiAgICAgICAgICAgIHd5bmlrKz1wLmZpcnN0KmNhcGFjaXR5OwogICAgICAgICAgICBjYXBhY2l0eT0wOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQ8PGZpeGVkPDxzZXRwcmVjaXNpb24oNyk8PHd5bmlrPDxlbmRsOwogICAgcmV0dXJuIDA7Cn0K