#include <bits/stdc++.h>
using namespace std;
long long n;
long long T;
long long a[200005];
long long b[200005];
vector<pair<long long, long long> > v1;
vector<pair<long long, long long> > v2;
int main() {
  scanf("%d%d", &n, &T);
  double ans = 0;
  long long low = 0, high = 0;
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  for (int i = 0; i < n; i++) scanf("%d", &b[i]);
  for (int i = 0; i < n; i++) {
    long long x = b[i], y = a[i];
    if (x == T)
      ans += y;
    else if (x < T) {
      v1.push_back(pair<long long, long long>(x, y));
      low += (T - x) * y;
      ans += y;
    } else if (x > T) {
      v2.push_back(pair<long long, long long>(x, y));
      high += (x - T) * y;
      ans += y;
    }
  }
  if (low == high) {
    printf("%.8f", ans);
    return 0;
  } else if (low > high) {
    long long minus = low - high;
    sort(v1.begin(), v1.end());
    for (int i = 0; i < v1.size(); i++) {
      if ((T - v1[i].first) * v1[i].second > minus) {
        ans -= (double)minus / (T - v1[i].first);
        break;
      } else {
        ans -= v1[i].second;
        minus -= (T - v1[i].first) * v1[i].second;
      }
    }
    printf("%.8f", ans);
  } else {
    long long minus = high - low;
    sort(v2.begin(), v2.end());
    for (int i = v2.size() - 1; i >= 0; i--) {
      if ((v2[i].first - T) * v2[i].second > minus) {
        ans -= (double)minus / (v2[i].first - T);
        break;
      } else {
        ans -= v2[i].second;
        minus -= (v2[i].first - T) * v2[i].second;
      }
    }
    printf("%.8f", ans);
  }
  return 0;
}
