注意D比库存总量和还大的情况
//
// main.cpp
// PATA1070
//
// Created by Phoenix on 2018/2/16.
// Copyright © 2018年 Phoenix. All rights reserved.
//
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct Mooncake {
double num;
double total, price;
}cake[1010];
bool cmp(Mooncake a, Mooncake b) {
return a.price > b.price;
}
int main(int argc, const char * argv[]) {
int n;
double d;
scanf("%d %lf", &n, &d);
for(int i = 0; i < n; i++) {
scanf("%lf", &cake[i].num);
}
for(int i = 0; i < n; i++) {
scanf("%lf", &cake[i].total);
cake[i].price = cake[i].total / cake[i].num;
}
sort(cake, cake + n, cmp);
double ans = 0, k = 0;
int i = 0;
while(k < d && i < n) {
if(k + cake[i].num < d) {
ans += cake[i].total;
k += cake[i].num;
i++;
} else {
ans += cake[i].price * (d - k);
k = d;
}
}
printf("%.2f", ans);
return 0;
}