import java.util.Arrays;
import java.util.Scanner;
import java.util.Comparator;
public class Main {
static class Item {
double ratio;
int weight;
int value;
public Item(double ratio, int weight, int value) {
this.ratio = ratio;
this.weight = weight;
this.value = value;
}
}
static class ItemComparator implements Comparator<Item> {
@Override
public int compare(Item a, Item b) {
// Sorts in descending order of ratio (a.ratio > b.ratio)
if (a.ratio < b.ratio) {
return 1;
} else if (a.ratio > b.ratio) {
return -1;
} else {
return 0;
}
}
}
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in);
int n = scanner.nextInt();
double W = scanner.nextInt();
int[] weights = new int[n];
int[] values = new int[n];
for (int i = 0; i < n; i++) {
weights[i] = scanner.nextInt();
}
for (int i = 0; i < n; i++) {
values[i] = scanner.nextInt();
}
Item[] items = new Item[n];
for (int i = 0; i < n; i++) {
double ratio = (double) values[i] / weights[i];
items[i] = new Item(ratio, weights[i], values[i]);
}
// Sort items by ratio in descending order
Arrays.
sort(items,
new ItemComparator
());
double totalValue = 0.0;
double remainingCapacity = W;
for (int i = 0; i < n; i++) {
Item item = items[i];
if (remainingCapacity >= item.weight) {
totalValue += item.value;
remainingCapacity -= item.weight;
} else {
totalValue += item.ratio * remainingCapacity;
break;
}
}
System.
out.
printf("%.2f%n", totalValue
); scanner.close();
}
}