#include<iostream>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<algorithm>
using namespace std;
struct w
{
double p; //概率
int mark; //分数
double exp; //期望
double c; //分数和exp的差值
bool operator<(const w& a) //按照差值排序
{
return c > a.c;
}
}wk[50001];
int main()
{
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
double x;
cin >> x;
wk[i].p = (x * 1.0) / 100;
}
for (int i = 0; i < n; i++)
{
int x;
cin >> x;
wk[i].mark = x;
}
for (int i = 0; i < n; i++)
{
wk[i].exp = wk[i].p * wk[i].mark;
}
for (int i = 0; i < n; i++)
{
wk[i].c = wk[i].mark-wk[i].exp;
}
sort(wk, wk + n);
for (int i = 0; i < m; i++)
{
wk[i].exp = wk[i].mark;
}
double ans = 0.0;
for (int i = 0; i < n; i++)
{
ans += wk[i].exp;
}
printf("%.2lf", ans);
}
Q.E.D.