#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
using namespace std;
const int maxn = 1011;
struct node
{
double t;
double p;
double num;
};
bool cmp(node a,node b)
{
return a.p > b.p;
}
int main()
{
freopen("1.txt","r",stdin);
int n;
double m;
node moon[maxn];
cin>>n>>m;
for(int i = 0;i<n;i++)
{
cin>>moon[i].num;
}
for(int i = 0;i<n;i++)
{
cin>>moon[i].t;
moon[i].p = moon[i].t / moon[i].num;
}
sort(moon,moon+n,cmp);
int ind = 0;
double ans = 0;
for(int ind = 0;ind<n;ind++)
{
if(m >= moon[ind].num)
{
m -= moon[ind].num;
ans += moon[ind].t;
}
else
{
ans += moon[ind].p * m;
break;
}
}
// while(m>0)
// {
// if(m >= moon[ind].num)
// {
// m -= moon[ind].num;
// ans += moon[ind].t;
// ind++;
// }
// else
// {
// ans += moon[ind].p * m;
// break;
// }
// }
printf("%.2lf",ans);
return 0;
}
1070
最新推荐文章于 2024-05-22 09:03:38 发布