#include <iostream>
#include <vector>
#include <iomanip>
#include <algorithm>
using namespace std;
struct node{
float amount;
float price;
};
bool comp(node a, node b) { return a.price / a.amount > b.price / b.amount; }
int main()
{
int N, demand;
cin>>N>>demand;
vector<node> mooncakes(N);
float price = 0;
for(int i = 0; i < N; i++)
scanf("%f", &(mooncakes[i].amount));
for(int i = 0; i < N; i++)
scanf("%f", &(mooncakes[i].price));
sort(mooncakes.begin(), mooncakes.end(), comp);
for(auto itr = mooncakes.begin(); itr != mooncakes.end(); itr ++)
{
if (itr -> amount > demand){
price += itr -> price * demand / itr -> amount;
cout<<setiosflags(ios::fixed)<<setprecision(2)<<price<<endl;
return 0;
}
price += itr -> price;
demand -= itr ->amount;
}
cout<<setiosflags(ios::fixed)<<setprecision(2)<<price<<endl;
}
|