#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int n, k;
int v[N], c[N];
int fv[N], fc[N];
int sv[N], sc[N], tc, tv;
int ff[N];
bool cmp(int a, int b) { return a > b; }
void init() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) scanf("%d", &v[i]), v[i] *= 100, fv[i] = i;
  for (int i = 1; i <= n; i++) scanf("%d", &c[i]), fc[i] = i;
}
int getfatherfc(int x) { return fc[x] == x ? x : fc[x] = getfatherfc(fc[x]); }
int getfatherfv(int x) { return fv[x] == x ? x : fv[x] = getfatherfv(fv[x]); }
void work() {
  tc = tv = 0;
  int x;
  for (int i = n; i >= 1; i--) {
    while (tv > 0 && v[i] >= v[sv[tv]]) {
      x = sv[tv];
      fv[x] = i;
      tv--;
    }
    sv[++tv] = i;
    while (tc > 0 && c[i] <= c[sc[tc]]) {
      x = sc[tc];
      fc[x] = i;
      tc--;
    }
    sc[++tc] = i;
    int l = i - 1, r = n, mid, f1, f2;
    while (r - l > 1) {
      mid = (l + r) >> 1;
      fc[mid] = getfatherfc(mid);
      fv[mid] = getfatherfv(mid);
      v[fv[mid]] < c[fc[mid]] ? l = mid : r = mid;
    }
    fc[r] = getfatherfc(r);
    fv[r] = getfatherfv(r);
    ff[i] = min(c[fc[r]], v[fv[r]]);
    if (r != i) {
      r--;
      fc[r] = getfatherfc(r);
      fv[r] = getfatherfv(r);
      ff[i] = max(ff[i], min(c[fc[r]], v[fv[r]]));
    }
  }
  sort(ff + 1, ff + n + 1, cmp);
  double C, k1 = k, k2 = n - k + 1, I, K, ans = 0.0, now;
  C = k1 / k2;
  for (int i = n; i >= k; i--) {
    k1 = i, k2 = i - k + 1;
    C = C * k2 / k1;
    now = ff[i];
    ans += now * C;
  }
  printf("%.10f\n", ans);
}
int main() {
  init();
  work();
  return 0;
}
