#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const double PI = acos(-1);
const int maxn = 1100000;
int n, k;
int v[maxn];
int c[maxn];
long long ans[maxn];
int st[maxn];
int t = 0;
int minr[maxn];
int dat[2][22][maxn];
int mm[maxn];
void initRMQ() {
  mm[0] = -1;
  int x, y;
  for (int i = 1; i <= n; i++) {
    mm[i] = (i & (i - 1)) == 0 ? mm[i - 1] + 1 : mm[i - 1];
  }
  for (int i = 1; i <= n; i++) dat[0][0][i] = i;
  for (int i = 1; i <= mm[n]; i++) {
    for (int j = 1; j <= n - (1 << i) + 1; j++) {
      x = dat[0][i - 1][j];
      y = dat[0][i - 1][j + (1 << (i - 1))];
      dat[0][i][j] = v[x] < v[y] ? y : x;
    }
  }
  for (int i = 1; i <= n; i++) dat[1][0][i] = i;
  for (int i = 1; i <= mm[n]; i++) {
    for (int j = 1; j <= n - (1 << i) + 1; j++) {
      x = dat[1][i - 1][j];
      y = dat[1][i - 1][j + (1 << (i - 1))];
      dat[1][i][j] = c[x] < c[y] ? x : y;
    }
  }
}
int askRMQ(int x, int y, int id) {
  int t = mm[y - x + 1];
  y = y - (1 << t) + 1;
  if (id == 0) {
    x = dat[0][t][x];
    y = dat[0][t][y];
    return v[x] < v[y] ? v[y] : v[x];
  } else {
    x = dat[1][t][x];
    y = dat[1][t][y];
    return c[x] < c[y] ? c[x] : c[y];
  }
}
void debug() {
  for (int i = 1; i <= n; i++) {
    for (int j = i; j <= n; j++) cout << askRMQ(i, j, 0) << " ";
  }
  cout << endl;
  for (int i = 1; i <= n; i++) cout << minr[i] << " ";
  cout << endl;
}
int getans(int l, int r) {
  int maxv = askRMQ(l, r, 0);
  int minc = askRMQ(l, r, 1);
  return min(maxv * 100, minc);
}
int main() {
  cin >> n >> k;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &v[i]);
  }
  for (int i = 1; i <= n; i++) {
    scanf("%d", &c[i]);
  }
  t = 0;
  initRMQ();
  for (int i = 1; i <= n; i++) {
    int le = i;
    int ri = n;
    while (le + 1 < ri) {
      int m = (le + ri) / 2;
      int maxv = askRMQ(i, m, 0);
      int minc = askRMQ(i, m, 1);
      if (100 * maxv >= minc) {
        ri = m;
      } else
        le = m;
    }
    ans[i] = max(getans(i, le), getans(i, ri));
  }
  sort(ans + 1, ans + n + 1);
  double res = 0;
  double t = (double)k / n;
  int p = n - 1;
  for (int i = 1; i <= n; i++) {
    res += t * ans[i];
    if (p == k - 1) break;
    t = t * (double)(p + 1 - k) / (double)p;
    p--;
  }
  printf("%.8f\n", res);
  return 0;
}
