#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  double t;
  cin >> n >> t;
  vector<pair<double, double>> v(n);
  for (auto& e : v) scanf("%lf", &e.second);
  for (auto& e : v) scanf("%lf", &e.first);
  sort(begin(v), end(v));
  double numerator = 0;
  double denominator = 0;
  for (const auto& e : v) {
    numerator += e.first * e.second;
    denominator += e.second;
  }
  const double kEpsilon = 1e-9;
  int begin = 0;
  int end = v.size() - 1;
  double ans = denominator;
  while (begin < end) {
    double actual_temp = numerator / denominator;
    if (fabs(actual_temp - t) < kEpsilon) break;
    bool less_before = actual_temp < t;
    int index = less_before ? begin : end;
    double new_numerator = numerator - v[index].first * v[index].second;
    double new_denominator = denominator - v[index].second;
    double new_temp = new_numerator / new_denominator;
    bool less_after = new_temp < t;
    if (less_before == less_after) {
      numerator = new_numerator;
      denominator = new_denominator;
      ans -= v[index].second;
      index == begin ? begin++ : end--;
      continue;
    }
    double lo = 0.0;
    double hi = v[index].second;
    while (fabs(lo - hi) > kEpsilon) {
      double med = (lo + hi) / 2.0;
      new_numerator = numerator - v[index].first * med;
      new_denominator = denominator - med;
      new_temp = new_numerator / new_denominator;
      if (fabs(new_temp - t) < kEpsilon) {
        lo = med;
        break;
      }
      if (new_temp < t) {
        if (index == begin)
          lo = med;
        else
          hi = med;
      } else {
        if (index == begin)
          hi = med;
        else
          lo = med;
      }
    }
    numerator = numerator - v[index].first * lo;
    denominator = denominator - lo;
    ans -= lo;
    break;
  }
  double temp = numerator / denominator;
  if (fabs(temp - t) < kEpsilon) {
    cout << setprecision(10) << ans << endl;
  } else {
    cout << 0 << endl;
  }
  return 0;
}
