#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int MAX = 1000005;
int n, k;
int st1[MAX][20];
int st2[MAX][20];
int v[MAX];
int c[MAX];
int ans[MAX];
double factor[MAX];
int log(int x) {
  int ct = 0;
  int k = 1;
  while (k <= x) {
    k *= 2;
    ct++;
  }
  return ct - 1;
}
int pow2(int x) {
  int ans = 1;
  for (int i = 0; i < x; i++) {
    ans *= 2;
  }
  return ans;
}
void process2() {
  for (int j = 1; (1 << j) <= n; j++) {
    for (int i = 1; i + (1 << j) - 1 <= n; i++) {
      if (st2[i][j - 1] < st2[i + (1 << (j - 1))][j - 1]) {
        st2[i][j] = st2[i][j - 1];
      } else {
        st2[i][j] = st2[i + (1 << (j - 1))][j - 1];
      }
    }
  }
}
int rmq2(int i, int j) {
  int k = log(j - i + 1);
  if (st2[i][k] <= st2[j - pow2(k) + 1][k]) {
    return st2[i][k];
  }
  return st2[j - pow2(k) + 1][k];
}
void process1() {
  for (int j = 1; (1 << j) <= n; j++) {
    for (int i = 1; i + (1 << j) - 1 <= n; i++) {
      if (st1[i][j - 1] > st1[i + (1 << (j - 1))][j - 1]) {
        st1[i][j] = st1[i][j - 1];
      } else {
        st1[i][j] = st1[i + (1 << (j - 1))][j - 1];
      }
    }
  }
}
int rmq1(int i, int j) {
  int k = log(j - i + 1);
  if (st1[i][k] >= st1[j - pow2(k) + 1][k]) {
    return st1[i][k];
  }
  return st1[j - pow2(k) + 1][k];
}
int first(int l, int r) { return 100 * rmq1(l, r); }
int g(int l, int r) { return rmq2(l, r); }
int p(int l, int r) { return min(g(l, r), first(l, r)); }
int main() {
  scanf("%d %d", &n, &k);
  for (int i = 0; i < n; i++) {
    scanf("%d", &v[i + 1]);
    st1[i + 1][0] = v[i + 1];
  }
  for (int i = 0; i < n; i++) {
    scanf("%d", &c[i + 1]);
    st2[i + 1][0] = c[i + 1];
  }
  process1();
  process2();
  factor[1] = (k + 0.0) / n;
  for (int i = 2; i < n + 1; i++) {
    factor[i] = factor[i - 1] * (0.0 + n - k - (i - 2)) / (n - i + 1);
  }
  for (int l = 1; l < n + 1; l++) {
    int lo = l;
    int hi = n;
    while (lo < hi) {
      int mid = (lo + hi) / 2;
      if (first(l, mid) == g(l, mid)) {
        lo = mid;
        ans[l] = first(l, mid);
        break;
      }
      if (first(l, mid) < g(l, mid)) {
        lo = mid + 1;
      } else {
        hi = mid;
      }
    }
    if (ans[l] == 0) {
      ans[l] = p(l, lo);
      if (l <= lo - 1) {
        ans[l] = max(ans[l], p(l, lo - 1));
      }
    }
  }
  sort(ans + 1, ans + n + 1);
  double fin = 0;
  for (int i = 1; i < n + 1; i++) {
    fin += ans[i] * factor[i];
  }
  printf("%.10f\n", fin);
}
