#include <bits/stdc++.h>
using namespace std;
const long long inf = 9.2e18;
const int maxn = 2e5 + 70;
const int INF = 2.1e9;
const int maxm = 1e6 + 70;
const int MOD = 1e9 + 7;
const double eps = 1e-7;
const double PI = acos(-1.0);
int n, m, k, T;
vector<pair<int, int> > V[2];
long long sum[2];
int a[maxn], b[maxn];
int main() {
  while (cin >> n >> T) {
    V[0].clear();
    V[1].clear();
    sum[0] = 0;
    sum[1] = 0;
    for (int i = 0; i < n; i++) scanf("%d", &a[i]);
    for (int i = 0; i < n; i++) scanf("%d", &b[i]);
    double ans = 0.0;
    for (int i = 0; i < n; i++) {
      int x = a[i], t = b[i];
      if (t == T)
        ans += x;
      else {
        bool d = t > T;
        int dt = abs(T - t);
        V[d].push_back(make_pair(dt, x));
        sum[d] += (long long)dt * x;
      }
    }
    sort(V[0].begin(), V[0].end());
    sort(V[1].begin(), V[1].end());
    bool d = sum[0] > sum[1];
    for (int i = 0; i < V[d].size(); i++) ans += V[d][i].second;
    int p = 0;
    long long t = sum[d];
    while (t > 0 && p < V[d ^ 1].size()) {
      long long x = (long long)V[d ^ 1][p].first * V[d ^ 1][p].second;
      if (t > x) {
        t -= x;
        ans += V[d ^ 1][p].second;
        p++;
      } else {
        ans += (double)t / V[d ^ 1][p].first;
        break;
      }
    }
    printf("%.10lf\n", ans);
  }
  return 0;
}
