#include <bits/stdc++.h>
using namespace std;
int max1[1000005][25], min1[1000005][25], v[1000005], c[1000005], opt[1000005],
    po[1000005];
int main() {
  int n, k, i, j, min2, max2, lo, hi, mid, u, d, st, lim, p;
  double ans, rp;
  pair<int, int> ret;
  scanf("%d%d", &n, &k);
  for (i = 0; i < n; i++) {
    scanf("%d", &v[i]);
  }
  for (i = 0; i < n; i++) {
    scanf("%d", &c[i]);
  }
  for (i = 1; i <= n; i++) {
    for (j = 0; (1 << j) <= i; j++) {
    }
    po[i] = j - 1;
  }
  for (i = 0; i < n; i++) {
    max1[i][0] = v[i] * 100;
    min1[i][0] = c[i];
  }
  for (i = 0; (1 << (i + 1)) <= n; i++) {
    lim = i + 1;
    for (j = 0; j < n; j++) {
      if (j + (1 << (i + 1)) - 1 < n) {
        max1[j][i + 1] = max(max1[j][i], max1[j + (1 << i)][i]);
        min1[j][i + 1] = min(min1[j][i], min1[j + (1 << i)][i]);
      } else {
        max1[j][i + 1] = -1;
        min1[j][i + 1] = -1;
      }
    }
  }
  for (i = 0; i < n; i++) {
    lo = i;
    hi = n - 1;
    while (lo < hi) {
      mid = (lo + hi + 1) / 2;
      p = po[mid - i + 1];
      max2 = max(max1[i][p], max1[mid - (1 << p) + 1][p]);
      min2 = min(min1[i][p], min1[mid - (1 << p) + 1][p]);
      if (max2 <= min2) {
        lo = mid;
      } else {
        hi = mid - 1;
      }
    }
    p = po[lo - i + 1];
    max2 = max(max1[i][p], max1[lo - (1 << p) + 1][p]);
    min2 = min(min1[i][p], min1[lo - (1 << p) + 1][p]);
    opt[i] = min(max2, min2);
    if (lo + 1 < n) {
      lo++;
      p = po[lo - i + 1];
      max2 = max(max1[i][p], max1[lo - (1 << p) + 1][p]);
      min2 = min(min1[i][p], min1[lo - (1 << p) + 1][p]);
      opt[i] = max(opt[i], min(max2, min2));
    }
  }
  ans = 0.0;
  sort(opt, opt + n);
  for (i = 0; i <= n - k; i++) {
    if (i == 0) {
      rp = (k * 1.0) / n;
    } else {
      if (i == 1) {
        u = n - k;
        d = n - 1;
      } else {
        u--;
        d--;
      }
      rp *= u;
      rp /= d;
    }
    ans += rp * opt[i];
  }
  printf("%.10lf\n", ans);
  return 0;
}
