#include <bits/stdc++.h>
using namespace std;
const int maxN = 2E5 + 5;
const double eps = 1E-9;
int n, T;
double ans = 0;
pair<double, double> a[maxN];
void solve() {
  double cur1 = 0, cur2 = 0;
  int L = 1, R = n;
  for (int i = 1; i <= n; ++i) {
    if (a[i].first < 0) cur1 -= a[i].first * a[i].second;
    if (a[i].first > 0) cur2 += a[i].first * a[i].second;
  }
  if (abs(cur1 - cur2) > eps) {
    while (L <= n && a[L].first < 0 && cur1 - cur2 > eps) {
      double x = min((cur1 - cur2) / -a[L].first, a[L].second);
      cur1 += a[L].first * a[L].second;
      a[L].second -= x;
      cur1 -= a[L].first * a[L].second;
      ++L;
    }
    while (R > 0 && a[R].first > 0 && cur2 - cur1 > eps) {
      double x = min((cur2 - cur1) / a[R].first, a[R].second);
      cur2 -= a[R].first * a[R].second;
      a[R].second -= x;
      cur2 += a[R].first * a[R].second;
      --R;
    }
  }
  for (int i = 1; i <= n; ++i) ans += a[i].second;
}
int main() {
  ios_base::sync_with_stdio(false);
  (cout << fixed).precision(10);
  cin >> n >> T;
  for (int i = 1; i <= n; ++i) cin >> a[i].second;
  for (int i = 1; i <= n; ++i) cin >> a[i].first, a[i].first -= T;
  sort(a + 1, a + n + 1);
  solve();
  cout << ans << "\n";
  return 0;
}
