#include <bits/stdc++.h>
using namespace std;
bool isrange(int second, int first, int n, int m) {
  if (0 <= second && second < n && 0 <= first && first < m) return true;
  return false;
}
int dy[4] = {1, 0, -1, 0}, dx[4] = {0, 1, 0, -1},
    ddy[8] = {1, 0, -1, 0, 1, 1, -1, -1}, ddx[8] = {0, 1, 0, -1, 1, -1, 1, -1};
long long int arr1[222222], arr2[222222];
vector<pair<long long int, long long int> > v1, v2;
bool tmr(pair<long long int, long long int> a,
         pair<long long int, long long int> b) {
  if (a.first != b.first) return a.first > b.first;
  return a.second > b.second;
}
bool eq(double a, double b) {
  if (abs(a - b) < 0.00000001) return true;
  return false;
}
int main(void) {
  int n;
  long long int t;
  scanf("%d%lld", &n, &t);
  for (int e = 0; e < n; e++) scanf("%lld", &arr1[e]);
  for (int e = 0; e < n; e++) scanf("%lld", &arr2[e]);
  long long int f1 = 0, f2 = 0;
  double s1 = 0, s2 = 0, s3 = 0;
  for (int e = 0; e < n; e++) {
    if (arr2[e] > t) {
      v1.push_back(make_pair(arr2[e] - t, arr1[e]));
      f1 += (arr2[e] - t) * arr1[e];
      s1 += (long double)arr1[e];
    } else if (arr2[e] < t) {
      v2.push_back(make_pair(abs(t - arr2[e]), arr1[e]));
      f2 += (arr2[e] - t) * arr1[e];
      s2 += (long double)arr1[e];
    } else {
      s3 += (long double)arr1[e];
    }
  }
  sort(v1.begin(), v1.end(), tmr);
  sort(v2.begin(), v2.end(), tmr);
  if (f1 == 0 && f2 == 0)
    printf("%.9lf\n", s1 + s2 + s3);
  else if (f1 == 0 || f2 == 0)
    printf("%.9lf\n", s3);
  else {
    double ans = s2 + s1 + s3;
    if (abs(f1) > abs(f2)) {
      double tot = (long double)(abs(f1) - abs(f2));
      for (int e = 0; e < (int)v1.size(); e++) {
        double vv = (long double)v1[e].first;
        double cap = (long double)v1[e].second;
        if (vv * cap > tot || eq(vv * cap, tot)) {
          ans -= (tot / vv);
          break;
        } else {
          ans -= cap;
          tot -= vv * cap;
        }
      }
    } else if (abs(f1) < abs(f2)) {
      double tot = (long double)(abs(f2) - abs(f1));
      for (int e = 0; e < (int)v2.size(); e++) {
        double vv = (long double)v2[e].first;
        double cap = (long double)v2[e].second;
        if (vv * cap > tot || eq(vv * cap, tot)) {
          ans -= (tot / vv);
          break;
        } else {
          ans -= cap;
          tot -= vv * cap;
        }
      }
    }
    printf("%.9lf", ans);
  }
  return 0;
}
