贪心
#include <iostream>
#include <bits/stdc++.h>
#define maxn 1010
using namespace std;
struct Node
{
double s;
double w;
Node(int s,double w):s(s),w(w){}
};
vector<Node>nodes;
int cmp(const Node & a, const Node & b)
{
return a.w>b.w;
}
int main()
{
int n,N;
double s[maxn],v[maxn];
double w[maxn];
cin>>n>>N;
for(int i = 0;i<n;i++){
cin>>s[i];
}
for(int i = 0;i<n;i++){
cin>>v[i];
}
//
for(int i = 0;i<n;i++){
w[i] = v[i]/s[i];
nodes.push_back(Node(s[i],w[i]));
}
sort(nodes.begin(),nodes.end(),cmp);
double ans = 0;
for(int i = 0;i<nodes.size();i++)
{
if(nodes[i].s>N)
{
ans += N*nodes[i].w;
break;
}
else
{
ans += nodes[i].s * nodes[i].w;
N-= nodes[i].s;
}
}
printf("%.2f\n",ans);
return 0;
}
/**
3 100
18 15 10
75 72 45
**/