#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000010;
const int MLOG = 20;
int n, k;
int stv[MLOG][MAXN], stc[MLOG][MAXN];
int p[MAXN];
int x[MAXN];
pair<int, int> f(int l, int r) {
  int xv = x[r - l + 1];
  return pair<int, int>(100 * max(stv[xv][l], stv[xv][r - (1 << xv) + 1]),
                        min(stc[xv][l], stc[xv][r - (1 << xv) + 1]));
}
int main(void) {
  scanf("%d %d", &n, &k);
  for (int i = 0; i < n; i++) scanf("%d", stv[0] + i);
  for (int i = 0; i < n; i++) scanf("%d", stc[0] + i);
  x[1] = 0;
  for (int i = 2; i <= n; i++) {
    if ((1 << (x[i - 1] + 1)) <= i)
      x[i] = x[i - 1] + 1;
    else
      x[i] = x[i - 1];
  }
  for (int i = 1; i < MLOG; i++) {
    for (int j = 0; j <= n - (1 << i); j++) {
      stv[i][j] = max(stv[i - 1][j], stv[i - 1][j + (1 << (i - 1))]);
      stc[i][j] = min(stc[i - 1][j], stc[i - 1][j + (1 << (i - 1))]);
    }
  }
  for (int i = 0; i < n; i++) {
    int low = i, high = n - 1;
    while (low + 1 < high) {
      int mid = (low + high) / 2;
      pair<int, int> a = f(i, mid);
      if (a.first < a.second)
        low = mid;
      else
        high = mid;
    }
    pair<int, int> p1 = f(i, low), p2 = f(i, high);
    p[i] = max(min(p1.first, p1.second), min(p2.first, p2.second));
  }
  sort(p, p + n);
  double ans = 0, mult = (double)k / n;
  for (int i = 0; i < n; i++) {
    ans += mult * p[i];
    mult *= (double)(n - k - i) / (n - 1 - i);
  }
  printf("%.12f\n", ans);
  return 0;
}
