#include <bits/stdc++.h>
using namespace std;
const int N = 1000005;
int LOG2[N];
int n, k, a[21][N], b[20][N], val[N];
int f(int l, int r) {
  int dis = r - l + 1, w = LOG2[dis];
  return max(a[w][l], a[w][r - (1 << w) + 1]);
}
int g(int l, int r) {
  int dis = r - l + 1, w = LOG2[dis];
  return min(b[w][l], b[w][r - (1 << w) + 1]);
}
int check(int li) {
  int l = li, r = n, ans = 0;
  while (l < r) {
    int mid = (l + r) / 2;
    int x = f(li, mid), y = g(li, mid);
    ans = max(ans, min(x, y));
    if (x < y)
      l = mid + 1;
    else
      r = mid;
  }
  for (int k = -1; k <= 1; k++)
    if (l + k >= l && l + k <= n)
      ans = max(ans, min(f(li, l + k), g(li, l + k)));
  return ans;
}
int main() {
  cin >> n >> k;
  for (int i = 2; i <= n; i++) {
    LOG2[i] = LOG2[i / 2] + 1;
  }
  for (int i = 1; i <= n; i++) scanf("%d", &a[0][i]), a[0][i] *= 100;
  for (int i = 1; i <= n; i++) scanf("%d", &b[0][i]);
  for (int k = 1; k <= 20; k++) {
    int d = (1 << k);
    for (int i = 1; i + d - 1 <= n; i++) {
      a[k][i] = max(a[k - 1][i], a[k - 1][i + d / 2]);
      b[k][i] = min(b[k - 1][i], b[k - 1][i + d / 2]);
    }
  }
  for (int i = 1; i <= n; i++) {
    val[i] = check(i);
  }
  sort(val + 1, val + 1 + n);
  double now = (double)k / n, ans = 0;
  for (int i = 1; i <= n; i++) {
    ans += val[i] * now;
    if (n - i + 1 <= k) break;
    now = now * (n - i - k + 1) / (n - i);
  }
  printf("%.16f\n", ans);
}
