#include <bits/stdc++.h>
int tmax[1000007];
int tmin[1000007];
int res[1000007];
template <typename Comparator>
struct fastminmax {
  std::deque<int> d;
  operator int() { return d.front(); }
  void pop_front(int x) {
    if (d.front() == x) d.pop_front();
  }
  void push_back(int x) {
    while (!d.empty() && Comparator()(d.back(), x)) d.pop_back();
    d.push_back(x);
  }
};
using fastmin = fastminmax<std::greater<int>>;
using fastmax = fastminmax<std::less<int>>;
int main() {
  int n, k;
  scanf("%i %i", &n, &k);
  for (int i = 0; i < n; i++) {
    scanf("%i", &tmax[i]);
    tmax[i] *= 100;
  }
  for (int i = 0; i < n; i++) scanf("%i", &tmin[i]);
  int j = -1;
  fastmin pmin;
  fastmax pmax;
  for (int i = 0; i < n; i++) {
    while ((j < i || std::min<int>(pmin, tmin[j + 1]) >
                         std::max<int>(pmax, tmax[j + 1])) &&
           j < n - 1) {
      j++;
      pmin.push_back(tmin[j]);
      pmax.push_back(tmax[j]);
    }
    res[i] = std::max<int>(
        std::min<int>(pmin, pmax),
        std::min<int>(std::min<int>(tmin[j + 1], pmin), tmax[j + 1]));
    pmin.pop_front(tmin[i]);
    pmax.pop_front(tmax[i]);
  }
  std::sort(res, res + n);
  long double r = 0.0;
  long double v = (long double)k / (n + 1 - k);
  for (int i = 0; i < n; i++) {
    j = n - i - 1;
    v = v * (j + 2 - k) / (j + 1);
    r += v * res[i];
  }
  printf("%Lf\n", r);
  return 0;
}
