#include <bits/stdc++.h>
using namespace std;
const int lgmax = 23;
const int nmax = 1000009;
int vrmq[lgmax][nmax], crmq[lgmax][nmax];
int v[nmax], c[nmax], dp[nmax], lg[nmax];
int mi, le, ri, i, j, n, k, F;
double w, result;
void runRmq() {
  for (i = 1; i <= n; ++i) {
    vrmq[0][i] = v[i];
    crmq[0][i] = c[i];
  }
  for (i = 2; i <= n; ++i) lg[i] = lg[i / 2] + 1;
  for (i = 1; i <= lg[n]; ++i)
    for (j = 1; j <= n - (1 << i) + 1; ++j) {
      vrmq[i][j] = max(vrmq[i - 1][j], vrmq[i - 1][j + (1 << (i - 1))]);
      crmq[i][j] = min(crmq[i - 1][j], crmq[i - 1][j + (1 << (i - 1))]);
    }
}
int minim(int i, int j) {
  int k = lg[j - i + 1];
  return min(crmq[k][i], crmq[k][j - (1 << k) + 1]);
}
int maxim(int i, int j) {
  int k = lg[j - i + 1];
  return max(vrmq[k][i], vrmq[k][j - (1 << k) + 1]);
}
int main() {
  scanf("%d%d", &n, &k);
  for (i = 1; i <= n; ++i) {
    scanf("%d", &v[i]);
    v[i] *= 100;
  }
  for (i = 1; i <= n; ++i) scanf("%d", &c[i]);
  runRmq();
  for (i = 1; i <= n; ++i) {
    le = i, ri = n, F = 0;
    while (le <= ri) {
      mi = (le + ri) / 2;
      if (minim(i, mi) >= maxim(i, mi))
        F = mi, le = mi + 1;
      else
        ri = mi - 1;
    }
    dp[i] = 0;
    if (F == 0) F = i;
    if (F <= n) dp[i] = min(minim(i, F), maxim(i, F));
    if (F + 1 <= n) dp[i] = max(dp[i], min(minim(i, F + 1), maxim(i, F + 1)));
  }
  sort(dp + 1, dp + n + 1);
  w = 1.0 * k / (n - k + 1);
  for (i = 1; i <= n - k + 1; ++i) {
    w *= n - i - k + 2;
    w /= n - i + 1;
    result += dp[i] * w;
  }
  printf("%.12lf\n", result);
  return 0;
}
