#include<stdio.h>
#include<algorithm>
using namespace std;
struct node{
float stock, total_price, unit_price;
}Node[1010];
bool cmp(node a, node b){
return a.unit_price > b.unit_price;
}
int main(){
int n;
float m, sum = 0;
scanf("%d%f", &n, &m);
for(int i = 0; i < n; i++){
scanf("%f", &Node[i].stock);
}
for(int i = 0; i < n; i++){
scanf("%f", &Node[i].total_price);
Node[i].unit_price = Node[i].total_price / Node[i].stock;
}
sort(Node, Node + n, cmp);
for(int i = 0; i < n; i++){
if(Node[i].stock < m){
sum += Node[i].total_price;
m -= Node[i].stock;
}
else{
sum += m * Node[i].unit_price;
break;
}
}
printf("%.2f\n", sum);
return 0;
}
需要转换为小数形式的尽量直接用float