#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 20;
pair<int, int> arr[N];
long long accFlow[N], accMix[N];
void pre(int n) {
  accFlow[0] = arr[0].second;
  accMix[0] = 1ll * arr[0].first * arr[0].second;
  for (int i = 1; i < n; i++) {
    accFlow[i] = accFlow[i - 1] + arr[i].second;
    accMix[i] = accMix[i - 1] + 1ll * arr[i].first * arr[i].second;
  }
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  ;
  int n, t;
  cin >> n >> t;
  for (int i = 0; i < n; i++) {
    cin >> arr[i].second;
  }
  for (int i = 0; i < n; i++) {
    cin >> arr[i].first;
  }
  sort(arr, arr + n);
  pre(n);
  if (1.0 * accMix[n - 1] / accFlow[n - 1] < t) {
    reverse(arr, arr + n);
    pre(n);
  }
  for (int i = n - 1; i > -1; i--) {
    if (i == 0) {
      if (arr[i].first == t) {
        cout << arr[i].second << endl;
        return 0;
      }
      break;
    }
    if ((1.0 * accMix[i] / accFlow[i] >= t &&
         1.0 * accMix[i - 1] / accFlow[i - 1] <= t)) {
      long double l = 0, r = arr[i].second;
      for (int asd = 0; asd < 55; asd++) {
        long double mid = (l + r) / 2;
        if ((accMix[i - 1] + mid * arr[i].first) / (accFlow[i - 1] + mid) <=
            t) {
          l = mid;
        } else {
          r = mid;
        }
      }
      cout << fixed << setprecision(10) << l + accFlow[i - 1] << endl;
      return 0;
    }
    if (1.0 * accMix[i] / accFlow[i] <= t &&
        1.0 * accMix[i - 1] / accFlow[i - 1] >= t) {
      long double l = 0, r = arr[i].second;
      for (int asd = 0; asd < 55; asd++) {
        long double mid = (l + r) / 2;
        if ((accMix[i - 1] + mid * arr[i].first) / (accFlow[i - 1] + mid) >=
            t) {
          l = mid;
        } else {
          r = mid;
        }
      }
      cout << fixed << setprecision(10) << l + accFlow[i - 1] << endl;
      return 0;
    }
  }
  cout << 0 << endl;
  return 0;
}
