#include <stdio.h>
#include <iostream>
#include <queue>
#define maxn 100005
using namespace std;
int a[maxn],b[maxn],suma[maxn],sumb[maxn];
priority_queue<double,vector<double>,greater<double> > gr;
priority_queue<double,vector<double>,less<double> > les;
int main() {
// freopen("test.txt","r",stdin);
int n,k;
cin>>n>>k;
for(int i = 1; i<=n; i++) {
scanf("%d",a+i);
suma[i] = suma[i-1]+a[i];
}
for(int i = 1; i<=n; i++) {
scanf("%d",b+i);
sumb[i] = sumb[i-1]+b[i];
}
if(k==1) {
double maxx = -1;
for(int i = 1;i<=n;i++){
for(int j = 0; j<i; j++) {
double toadd = 1.0*(suma[i]-suma[j])/(sumb[i]-sumb[j]);
maxx = max(maxx,toadd);
}
}
printf("%.2lf",maxx);
return 0;
}
for(int i = 1; i<=n; i++) {
for(int j = 0; j<i; j++) {
double toadd = -1.0*(suma[i]-suma[j])/(sumb[i]-sumb[j]);
les.push(toadd);
if(les.size()>k) {
while(les.size()>k) {
double t= les.top();
les.pop();
gr.push(t);
}
}
if(!gr.empty()) {
while(gr.top()<les.top()) {
double t = gr.top();
gr.pop();
gr.push(les.top());
les.pop();
les.push(t);
}
}
}
}
printf("%.2lf",-les.top());
return 0;
}