#include <bits/stdc++.h>
using namespace std;
using namespace std;
const int MOD = 1000000007;
const int MAX = 1000005;
const int LOGMAX = 20;
int vis[MAX];
int rev[MAX];
int ma[MAX][LOGMAX];
int mi[MAX][LOGMAX];
int ans[MAX];
int log(int x) { return 32 - __builtin_clz(x) - 1; }
void process1(int N) {
  for (int i = 0; i < N; i++) {
    ma[i][0] = i;
  }
  for (int j = 1; 1 << j <= N; j++) {
    for (int i = 0; i + (1 << j) - 1 < N; i++) {
      if (vis[ma[i][j - 1]] >= vis[ma[i + (1 << (j - 1))][j - 1]]) {
        ma[i][j] = ma[i][j - 1];
      } else {
        ma[i][j] = ma[i + (1 << (j - 1))][j - 1];
      }
    }
  }
}
int rmq1(int i, int j) {
  int k = log(j - i + 1);
  return max(vis[ma[i][k]], vis[ma[j - (1 << k) + 1][k]]);
}
void process2(int N) {
  for (int i = 0; i < N; i++) {
    mi[i][0] = i;
  }
  for (int j = 1; 1 << j <= N; j++) {
    for (int i = 0; i + (1 << j) - 1 < N; i++) {
      if (rev[mi[i][j - 1]] <= rev[mi[i + (1 << (j - 1))][j - 1]]) {
        mi[i][j] = mi[i][j - 1];
      } else {
        mi[i][j] = mi[i + (1 << (j - 1))][j - 1];
      }
    }
  }
}
int rmq2(int i, int j) {
  int k = log(j - i + 1);
  return min(rev[mi[i][k]], rev[mi[j - (1 << k) + 1][k]]);
}
int p(int i, int j) { return min(100 * rmq1(i, j), rmq2(i, j)); }
int main() {
  int n, k;
  cin >> n >> k;
  ;
  for (int i = 0; i < n; i++) {
    scanf("%d", &vis[i]);
  }
  for (int i = 0; i < n; i++) {
    scanf("%d", &rev[i]);
  }
  process1(n);
  process2(n);
  double prob[MAX];
  fill(prob, prob + MAX, 0);
  prob[n - 1] = 1.0 * k / n;
  for (int i = n - 2; i >= k - 1; --i) {
    prob[i] = prob[i + 1] * (i - k + 2) / (i + 1);
  }
  for (int i = 0; i < n; i++) {
    int lo = i;
    int hi = n - 1;
    while (lo < hi) {
      int mid = (lo + hi) / 2;
      if (100 * rmq1(i, mid) == rmq2(i, mid)) {
        lo = mid;
        ans[i] = 100 * rmq1(i, mid);
        break;
      }
      if (100 * rmq1(i, mid) < rmq2(i, mid)) {
        lo = mid + 1;
      } else {
        hi = mid;
      }
    }
    if (ans[i] == 0) {
      ans[i] = p(i, lo);
      if (i <= lo - 1) {
        ans[i] = max(ans[i], p(i, lo - 1));
      }
    }
  }
  sort(ans, ans + n);
  double ex = 0.0;
  for (int i = 0; i < n - k + 1; i++) {
    ex += ans[i] * prob[n - i - 1];
  }
  printf("%.10f", ex);
}
