#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 5;
int n, k, c[maxn], v[maxn];
int mn[maxn][20], mx[maxn][20];
double p[maxn];
int h[maxn];
void RMQ_init1() {
  for (int i = 1; i <= n; i++) mx[i][0] = v[i];
  for (int j = 1; (1 << j) <= n; j++) {
    for (int i = 1; i + (1 << j) - 1 <= n; i++)
      mx[i][j] = max(mx[i][j - 1], mx[i + (1 << (j - 1))][j - 1]);
  }
}
void RMQ_init2() {
  for (int i = 1; i <= n; i++) mn[i][0] = c[i];
  for (int j = 1; (1 << j) <= n; j++) {
    for (int i = 1; i + (1 << j) - 1 <= n; i++)
      mn[i][j] = min(mn[i][j - 1], mn[i + (1 << (j - 1))][j - 1]);
  }
}
int RMQ1(int L, int R) {
  int k = 0;
  while (1 << (k + 1) <= (R - L + 1)) k++;
  return max(mx[L][k], mx[R - (1 << k) + 1][k]);
}
int RMQ2(int L, int R) {
  int k = 0;
  while (1 << (k + 1) <= (R - L + 1)) k++;
  return min(mn[L][k], mn[R - (1 << k) + 1][k]);
}
int ok(int x, int y) {
  int l = 100 * RMQ1(x, y);
  int r = RMQ2(x, y);
  return l < r;
}
void solve() {
  memset(h, 0, sizeof(h));
  int lb, ub, mid, res = 0;
  for (int i = 1; i <= n; i++) {
    lb = i, ub = n;
    for (int k = 1; k <= 50; k++) {
      mid = ub - (ub - lb) / 2;
      if (ok(i, mid)) {
        lb = mid;
      } else
        ub = mid - 1;
    }
    h[i] = min(100 * RMQ1(i, lb), RMQ2(i, lb));
    if (lb + 1 <= n)
      h[i] = max(h[i], min(100 * RMQ1(i, lb + 1), RMQ2(i, lb + 1)));
  }
  sort(h + 1, h + n + 1);
  double ans = 0.0, b = 1.0 * k / n;
  for (int i = 1; i <= n - k + 1; i++) {
    ans += b * h[i];
    b *= 1.0 * (n - k + 1 - i) / (n - i);
  }
  printf("%.9lf\n", ans);
}
int main() {
  while (scanf("%d %d", &n, &k) != EOF) {
    for (int i = 1; i <= n; i++) scanf("%d", &v[i]);
    for (int i = 1; i <= n; i++) scanf("%d", &c[i]);
    RMQ_init1();
    RMQ_init2();
    solve();
  }
  return 0;
}
