#include <bits/stdc++.h>
using namespace std;
int vp, cp, vTop, cTop, vStack[1111111], cStack[1111111], V[1111111],
    C[1111111];
int getVMax(int x) {
  int l = vTop, r = 1;
  while (l > r) {
    int mid = (l + r) / 2;
    if (vStack[mid] <= x)
      l = mid;
    else
      r = mid + 1;
  }
  return V[vStack[l]];
}
int getCMin(int x) {
  int l = cTop, r = 1;
  while (l > r) {
    int mid = (l + r) / 2;
    if (cStack[mid] <= x)
      l = mid;
    else
      r = mid + 1;
  }
  return C[cStack[l]];
}
int n, k, best[1111111];
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]);
  vTop = 0, cTop = 0;
  vp = 0, cp = 0;
  int r = n;
  for (int i = n; i >= 1; --i) {
    while (vTop > 0 && V[i] >= V[vStack[vTop]]) --vTop;
    while (cTop > 0 && C[i] <= C[cStack[cTop]]) --cTop;
    vStack[++vTop] = i;
    cStack[++cTop] = i;
    while (r > i && getVMax(r - 1) * 100 > getCMin(r - 1)) --r;
    best[i] = min(getVMax(r) * 100, getCMin(r));
    if (r > i)
      best[i] = max(best[i], min(getVMax(r - 1) * 100, getCMin(r - 1)));
  }
  sort(best + 1, best + n + 1);
  long double prob = 1.0, ans = 0;
  for (int i = n; i >= k; --i) {
    ans += best[n - i + 1] * prob / i * k;
    prob = prob / i * (i - k);
  }
  printf("%.12f\n", (double)ans);
  return 0;
}
