#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
struct mooncake
{
double store,sell,price;
};
bool cmp(mooncake a,mooncake b)
{
return a.price>b.price;
}
int main()
{
int n;
double m;
scanf("%d%lf",&n,&m);
vector<mooncake> ve(n);
for(int i=0;i<n;i++)
{
scanf("%lf",&ve[i].store);
}
for(int i=0;i<n;i++)
{
scanf("%lf",&ve[i].sell);
ve[i].price=ve[i].sell/ve[i].store;
}
sort(ve.begin(),ve.end(),cmp);
double ans=0;
for(int i=0;i<n;i++)
{
if(ve[i].store<=m)
{
m=m-ve[i].store;
ans+=ve[i].sell;
}else
{
ans+=ve[i].price*m;
break; ///****
}
}
printf("%.2f\n",ans);
return 0;
}
注意:售价,库存,单价,收益都应该定义成浮点数。