#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF = 0x3f3f3f3f;
const int maxn = 2e5 + 11;
int N, M, T, P, Q;
pair<int, int> v[maxn];
int main() {
  cin >> N >> T;
  for (int i = 0; i < N; i++) scanf("%d", &v[i].second);
  for (int i = 0; i < N; i++) scanf("%d", &v[i].first);
  sort(v, v + N);
  if (v[N - 1].first < T || v[0].first > T) {
    puts("0");
    return 0;
  }
  bool flag = 1;
  long long s = 0;
  for (int i = 0; i < N; i++) {
    s += v[i].second;
    if (v[i].first != T) flag = 0;
  }
  if (flag) {
    cout << s << endl;
    return 0;
  } else {
    int left = 0, right = 0;
    for (int i = 0; i < N; i++) {
      if (v[i].first <= T)
        left = i;
      else
        break;
    }
    right = left + 1;
    long long lsum = 0, rsum = 0;
    double ltot = 0, rtot = 0;
    for (int i = 0; i <= left; i++) {
      lsum += 1LL * abs(T - v[i].first) * v[i].second;
      ltot += v[i].second;
    }
    for (int i = right; i < N; i++) {
      rsum += 1LL * abs(v[i].first - T) * v[i].second;
      rtot += v[i].second;
    }
    if (rsum > lsum) {
      for (int i = N - 1; i >= right; i--) {
        long long cur = 1LL * abs(T - v[i].first) * v[i].second;
        long long diff = rsum - lsum;
        if (diff > cur)
          rsum -= cur, rtot -= v[i].second;
        else {
          rsum = lsum;
          rtot -= 1.0 * diff / fabs(T - v[i].first);
          break;
        }
      }
    } else {
      for (int i = 0; i <= left; i++) {
        long long cur = 1LL * abs(T - v[i].first) * v[i].second;
        long long diff = lsum - rsum;
        if (diff > cur)
          lsum -= cur, ltot -= v[i].second;
        else {
          lsum = rsum;
          ltot -= 1.0 * diff / fabs(T - v[i].first);
          break;
        }
      }
    }
    printf("%.16f\n", ltot + rtot);
  }
  return 0;
}
