#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const double eps = 1e-8;
const double PI = acos(-1.0);
const int MAXN = 1e6 + 5;
const int MAXM = 2e6 + 5;
const int MOD = 1e9 + 7;
int sgn(double x) {
  if (fabs(x) < eps) return 0;
  if (x < 0)
    return -1;
  else
    return 1;
}
long long pw(long long a, long long n, long long mod) {
  long long ret = 1;
  while (n) {
    if (n & 1) ret = ret * a % mod;
    a = a * a % mod;
    n >>= 1;
  }
  return ret;
}
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
void inc(long long &a, long long b) {
  a += b;
  if (a >= MOD) a -= MOD;
}
void dec(long long &a, long long b) {
  a -= b;
  if (a < 0) a += MOD;
}
int mul(int a, int b) {
  long long c = 1ll * a * b;
  return c - c / MOD * MOD;
}
int n, K, v[MAXN], c[MAXN];
int Log[MAXN], mx[MAXN][22], mi[MAXN][22];
void ST() {
  for (int i = 1; i <= n; i++) mx[i][0] = v[i], mi[i][0] = c[i];
  for (int j = 1; (1 << j) - 1 <= n; j++) {
    for (int i = 1; i + (1 << j) - 1 <= n; i++) {
      mx[i][j] = max(mx[i][j - 1], mx[i + (1 << (j - 1))][j - 1]);
      mi[i][j] = min(mi[i][j - 1], mi[i + (1 << (j - 1))][j - 1]);
    }
  }
  Log[1] = 0;
  for (int i = 2; i < n + 1; i++) Log[i] = Log[i >> 1] + 1;
}
int RMQV(int l, int r) {
  int k = Log[r - l + 1];
  return max(mx[l][k], mx[r - (1 << k) + 1][k]);
}
int RMQC(int l, int r) {
  int k = Log[r - l + 1];
  return min(mi[l][k], mi[r - (1 << k) + 1][k]);
}
int p[MAXN];
int find(int l, int r) {
  int i = l, mid;
  while (r - l > 10) {
    mid = l + r >> 1;
    int mxv = RMQV(i, mid), mic = RMQC(i, mid);
    if (mxv == mic)
      return mid;
    else if (mxv > mic)
      r = mid - 1;
    else
      l = mid + 1;
  }
  int mx = -INF, ret;
  for (int j = l; j < r + 1; j++) {
    int tmp = min(RMQV(i, j), RMQC(i, j));
    if (mx < tmp) {
      mx = tmp;
      ret = j;
    }
  }
  return ret;
}
long double lg[MAXN];
void init() {
  lg[0] = 0;
  for (int i = 1; i < n + 1; i++) lg[i] = lg[i - 1] + log(i);
}
long double C(int n, int m) { return lg[n] - lg[m] - lg[n - m]; }
int main() {
  scanf("%d%d", &n, &K);
  for (int i = 1; i < n + 1; i++) scanf("%d", &v[i]), v[i] *= 100;
  for (int i = 1; i < n + 1; i++) scanf("%d", &c[i]);
  ST();
  for (int i = n + 1 - 1; i >= 1; i--) {
    int r = find(i, n);
    p[i] = min(max(p[i + 1], v[i]), c[i]);
  }
  init();
  long double ans = 0;
  sort(p + 1, p + 1 + n);
  for (int i = 1; i < n + 1; i++) {
    int m = n - i;
    if (m >= K - 1) ans += (long double)p[i] * exp(C(m, K - 1) - C(n, K));
  }
  printf("%.10Lf\n", ans);
}
