#include <bits/stdc++.h>
using namespace std;
const long long N = 2e5 + 10;
const long double EPS = 1e-8;
long long n, T;
pair<long long, long long> a[N];
long long xsum[N], xtsum[N];
void build() {
  for (long long i = 1; i <= n; i++) {
    xsum[i] = xsum[i - 1] + a[i].second;
    xtsum[i] = xtsum[i - 1] + a[i].first * a[i].second;
  }
}
long long calc(long long l, long long r, long double p = 0, long double q = 0) {
  if (l > r) return q > 1.0 * T * p;
  return (xtsum[r] - xtsum[l - 1] + q) > 1.0 * T * (xsum[r] - xsum[l - 1] + p);
}
long long good(long long l, long long r) {
  return (xtsum[r] - xtsum[l - 1]) == T * (xsum[r] - xsum[l - 1]);
}
long double bs1(long long i) {
  long double p = 0, s = a[i].second;
  while (s > EPS) {
    if (!calc(1, i - 1, (p + s), (p + s) * a[i].first))
      p += s;
    else
      s /= 2;
  }
  return p;
}
long double bs2(long long i) {
  long double p = 0, s = a[i].second;
  while (s > EPS) {
    if (calc(i + 1, n, p + s, (p + s) * a[i].first))
      p += s;
    else
      s /= 2;
  }
  return p;
}
signed main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n >> T;
  for (long long i = 1; i <= n; i++) cin >> a[i].second;
  for (long long i = 1; i <= n; i++) cin >> a[i].first;
  sort(a + 1, a + 1 + n);
  build();
  if (T < a[1].first || a[n].first < T) {
    cout << 0 << '\n';
    return 0;
  }
  if (T == a[1].first) {
    long long res = 0, i = 0;
    while (i + 1 <= n && a[i + 1].first == a[1].first) i++, res += a[i].second;
    cout << res << '\n';
    return 0;
  }
  if (T == a[n].first) {
    long long res = 0, i = n + 1;
    while (i - 1 > 0 && a[i - 1].first == a[n].first) i--, res += a[i].second;
    cout << res << '\n';
    return 0;
  }
  long double ans;
  if (calc(1, n, 0, 0)) {
    long long i = 1;
    while (!calc(1, i)) i++;
    long double xts = xtsum[i - 1];
    long double xs = xsum[i - 1];
    long double t = a[i].first;
    ans = (xts - T * xs) / (T - t) + xs;
  } else {
    long long i = n;
    while (calc(i, n)) i--;
    long double xts = xtsum[n] - xtsum[i];
    long double xs = xsum[n] - xsum[i];
    long double t = a[i].first;
    ans = (xts - T * xs) / (T - t) + xs;
  }
  cout << fixed << setprecision(7) << ans << '\n';
}
