#include<stdio.h>
int find(float *daj, int n){
int idx=0;
float max=0;
for(int i=0; i<n; i++){
if(daj[i]>max){
idx = i;
max = daj[i];
}
}
return idx;
}
int main(){
int n;
int need;
int kuc[1000];
int shj[1000];
float daj[1000];
scanf("%d", &n);
scanf("%d", &need);
for(int i=0; i<n; i++){
scanf("%d", &kuc[i]);
}
for(int i=0; i<n; i++){
scanf("%d", &shj[i]);
daj[i] = (float)shj[i] / (float)kuc[i];
}
float sum=0;
while(need>0){
int t=find(daj, n);
if(kuc[t]<=need){
daj[t]=0;
need -= kuc[t];
sum += shj[t];
kuc[t]=0;
}
else{
sum += daj[t]*need;
need = 0;
}
}
printf("%f\n", sum);
}