1020 月饼 (25分)
#include<iostream>
#include<vector>
#include<cctype>
#include<map>
#include<set>
#include<sstream>
#include<string>
#include<cstdio>
#include<algorithm>
using namespace std;
struct Node{
double cnt,pride;
}node[1005];
bool cmp(Node a,Node b){
return a.pride>b.pride;
}
int main() {
int n,d; cin>>n>>d;
for(int i=0;i<n;i++){
cin>>node[i].cnt;
}
for(int i=0;i<n;i++){
double x;cin>>x;
node[i].pride=x/node[i].cnt;
}
sort(node,node+n,cmp);
double ans=0;
for(int i=0;i<n;i++){
if(d>=node[i].cnt){
d-=node[i].cnt;
ans+=node[i].cnt*node[i].pride;
node[i].cnt=0;
}else{
ans+=d*node[i].pride;
break;
}
}
printf("%.2f",ans);
return 0;
}