#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
double m;
cin >> n >> m;
vector<double> tab(n), v(n);
vector<pair<double,double>> bajtek;
for(int i = 0; i < n; i++) {
cin >> tab[i];
}
for(int i = 0; i < n; i++) {
cin >> v[i];
bajtek.push_back({v[i] / tab[i], tab[i]});
}
sort(bajtek.begin(), bajtek.end(), greater<>());
double wynik = 0.0;
for(int i = 0; i < n && m > 0; i++) {
if(m >= bajtek[i].second) {
m -= bajtek[i].second;
wynik += bajtek[i].second * bajtek[i].first;
} else {
wynik += bajtek[i].first * m;
break;
}
}
cout << fixed << setprecision(6) << wynik;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgZG91YmxlIG07CiAgICBjaW4gPj4gbiA+PiBtOwoKICAgIHZlY3Rvcjxkb3VibGU+IHRhYihuKSwgdihuKTsKICAgIHZlY3RvcjxwYWlyPGRvdWJsZSxkb3VibGU+PiBiYWp0ZWs7IAogICAgZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGNpbiA+PiB0YWJbaV07CiAgICB9CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgY2luID4+IHZbaV07CiAgICAgICAgYmFqdGVrLnB1c2hfYmFjayh7dltpXSAvIHRhYltpXSwgdGFiW2ldfSk7CiAgICB9CiAgICBzb3J0KGJhanRlay5iZWdpbigpLCBiYWp0ZWsuZW5kKCksIGdyZWF0ZXI8PigpKTsKCiAgICBkb3VibGUgd3luaWsgPSAwLjA7CgogICAgZm9yKGludCBpID0gMDsgaSA8IG4gJiYgbSA+IDA7IGkrKykgewogICAgICAgIGlmKG0gPj0gYmFqdGVrW2ldLnNlY29uZCkgewogICAgICAgICAgICBtIC09IGJhanRla1tpXS5zZWNvbmQ7CiAgICAgICAgICAgIHd5bmlrICs9IGJhanRla1tpXS5zZWNvbmQgKiBiYWp0ZWtbaV0uZmlyc3Q7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgd3luaWsgKz0gYmFqdGVrW2ldLmZpcnN0ICogbTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDYpIDw8IHd5bmlrOwogICAgcmV0dXJuIDA7Cn0=