#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.