#include <bits/stdc++.h>
using namespace std;
long long n;
long double T;
pair<long double, long double> a[200009];
bool cmp(pair<long double, long double> x, pair<long double, long double> y) {
  if (x.second == y.second) {
    return x.first < y.first;
  } else {
    return x.second < y.second;
  }
}
long double minm(long double x) {
  long double val = 0;
  for (long long i = (1); i <= (n); i++) {
    if ((a[i].first) >= x) {
      val = val + (x * a[i].second);
      break;
    } else {
      val = val + (a[i].first * a[i].second);
      x = x - a[i].first;
    }
  }
  return val;
}
long double maxm(long double x) {
  long double val = 0;
  for (long long i = (n); i >= (1); i--) {
    if ((a[i].first) >= x) {
      val = val + (x * a[i].second);
      break;
    } else {
      val = val + (a[i].first * a[i].second);
      x = x - a[i].first;
    }
  }
  return val;
}
bool chk(long double mid) {
  long double m1 = minm(mid);
  long double m2 = maxm(mid);
  long double rq = T * mid;
  if (rq >= m1 && m2 >= rq) {
    return true;
  } else {
    return false;
  }
}
void solve() {
  cin >> n >> T;
  long double sm = 0;
  for (long long i = (1); i <= (n); i++) {
    cin >> a[i].first;
    sm = sm + a[i].first;
  }
  for (long long i = (1); i <= (n); i++) {
    cin >> a[i].second;
  }
  sort(a + 1, a + n + 1, cmp);
  cout << fixed << setprecision(10);
  long long cnt = 0;
  long double st = (long double)0, en = (long double)sm, mid, ans;
  while (cnt != 60) {
    cnt += 1;
    mid = (st + en) / 2;
    if (chk(mid)) {
      ans = mid;
      st = mid;
    } else {
      en = mid;
    }
  }
  cout << ans << endl;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t = 1;
  while (t--) {
    solve();
  }
}
