#include <bits/stdc++.h>
using namespace std;
int n, k;
int v[1100000], c[1100000], tmp[1100000];
struct node {
  int pos, val;
  node() {}
  node(int pos, int val) : pos(pos), val(val) {}
} st[1100000];
int top;
double ans, now;
int cmp(int x, int y) { return x > y; }
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) scanf("%d", &v[i]), v[i] *= 100;
  for (int i = 1; i <= n; i++) scanf("%d", &c[i]);
  tmp[n] = min(v[n], c[n]);
  for (int i = n - 1; i >= 1; i--) {
    tmp[i] = min(v[i], c[i]);
    if (min(max(v[i], v[i + 1]), min(c[i], c[i + 1])) > tmp[i]) {
      v[i] = max(v[i], v[i + 1]);
      c[i] = min(c[i], c[i + 1]);
      tmp[i] = min(v[i], c[i]);
    }
  }
  sort(tmp + 1, tmp + 1 + n, cmp);
  now = (double)k / n;
  for (int i = n; i >= k; i--) {
    ans = ans + tmp[i] * now;
    now = now * (i - k) / (i - 1);
  }
  printf("%.6lf\n", ans);
  return 0;
}
