#include <bits/stdc++.h>
using namespace std;
class SparseTableRMQ {
 public:
  SparseTableRMQ(int *ar, int n) : n(n) { table = buildRMQ(ar); }
  ~SparseTableRMQ() { delete[] table; }
  int queryValue(int l, int r) {
    int k = lgInt(r - l);
    return min(table[l + n * k], table[r + n * k - (1 << k) + 1]);
  }

 private:
  int n, *table;
  int lgInt(int v) {
    static const unsigned b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000};
    static const unsigned S[] = {1, 2, 4, 8, 16};
    int res = 0;
    for (int i = 4; i >= 0; i--) {
      if (v & b[i]) {
        v >>= S[i];
        res |= S[i];
      }
    }
    return res;
  }
  int *buildRMQ(int *a) {
    int logn = 1;
    for (int k = 1; k < n; k *= 2) ++logn;
    int *r = new int[n * logn];
    int *b = r;
    copy(a, a + n, b);
    for (int k = 1; k < n; k *= 2) {
      copy(b, b + n, b + n);
      b += n;
      for (int i = 0; i < n - k; ++i) {
        b[i] = min(b[i], b[i + k]);
      }
    }
    return r;
  }
};
const int NX = 1000100, INF = INT_MAX;
int N, K, V[NX], C[NX], plr[NX];
long double lg_fac[NX];
long double lg_comb(int n, int k) {
  return lg_fac[n] - lg_fac[k] - lg_fac[n - k];
}
void solve() {
  for (int i = 0; i < (int)N; ++i) V[i] = -100 * V[i];
  SparseTableRMQ rmqV(V, N), rmqC(C, N);
  for (int i = 0; i < (int)N; ++i) {
    int L = i, R = N, M, maxi = 0, v, c;
    while (R - L > 1) {
      M = (L + R) / 2;
      v = -rmqV.queryValue(i, M - 1), c = rmqC.queryValue(i, M - 1);
      (v <= c ? L : R) = M;
    }
    for (int j = R - 1; j < (int)R + 1; ++j)
      if (j > i && j <= N) {
        v = -rmqV.queryValue(i, j - 1), c = rmqC.queryValue(i, j - 1);
        (maxi) = max((maxi), (min(v, c)));
      }
    plr[i] = maxi;
  }
  sort(plr, plr + N);
  for (int i = 0; i < (int)N; ++i) lg_fac[i + 1] = lg_fac[i] + log(i + 1);
  long double ans = 0, lg_prob;
  for (int i = 0; i + K <= N; ++i) {
    lg_prob = lg_comb(N - i - 1, K - 1) - lg_comb(N, K);
    ans += plr[i] * exp(lg_prob);
  }
  printf("%0.15f\n", (double)ans);
}
int main() {
  while (~scanf("%d%d", &N, &K)) {
    for (int i = 0; i < (int)N; ++i) scanf("%d", V + i);
    for (int i = 0; i < (int)N; ++i) scanf("%d", C + i);
    solve();
  }
}
