#include <bits/stdc++.h>
using namespace std;
long long pwr(long long base, long long p, long long mod = (1000000007LL)) {
  long long ans = 1;
  while (p) {
    if (p & 1) ans = (ans * base) % mod;
    base = (base * base) % mod;
    p /= 2;
  }
  return ans;
}
const int N = 1000002;
int n, k, vis[N], rev[N], sparse[2][22][N], power2[N];
int arr[N];
int query(int t, int l, int r) {
  int k = power2[r - l + 1];
  if (t == 0) return min(sparse[0][k][l], sparse[0][k][r - (1 << k) + 1]);
  return max(sparse[1][k][l], sparse[1][k][r - (1 << k) + 1]);
}
int main() {
  power2[1] = 0;
  for (int i = 2; i < N; i *= 2) power2[i]++;
  for (int i = 1; i < N; i++) power2[i] += power2[i - 1];
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &vis[i]);
    sparse[0][0][i] = vis[i];
  }
  for (int i = 1; i <= n; i++) {
    scanf("%d", &rev[i]);
    sparse[1][0][i] = rev[i];
  }
  for (int j = 1; (1 << j) <= n; j++)
    for (int i = 1; i + (1 << j) - 1 <= n; i++) {
      sparse[0][j][i] =
          min(sparse[0][j - 1][i], sparse[0][j - 1][i + (1 << (j - 1))]);
      sparse[1][j][i] =
          max(sparse[1][j - 1][i], sparse[1][j - 1][i + (1 << (j - 1))]);
    }
  int curmaxi, curmini;
  curmaxi = 100 * vis[n];
  curmini = rev[n];
  arr[n] = min(100 * vis[n], rev[n]);
  for (int i = n - 1; i > 0; i--) {
    int optval1 = min(max(curmaxi, 100 * vis[i]), min(curmini, rev[i]));
    int optval2 = min(100 * vis[i], rev[i]);
    arr[i] = max(optval1, optval2);
    if (optval1 >= optval2) {
      curmaxi = max(100 * vis[i], curmaxi);
      curmini = min(rev[i], curmini);
    } else {
      curmaxi = 100 * vis[i];
      curmini = rev[i];
    }
  }
  sort(arr + 1, arr + n + 1);
  double ans = 0.0, curr = (1.0 * k) / n;
  for (int i = 1; i + k - 1 <= n; i++) {
    ans += arr[i] * curr;
    curr /= n - i;
    curr *= n - k - (i - 1);
  }
  printf("%.10lf", ans);
  return 0;
}
