#include <bits/stdc++.h>
using namespace std;
const int N = 1000010;
const double eps = 1e-8;
int n, T, cnt1, cnt2;
long double sum1;
double sum2;
struct water {
  int a, t;
} A[N], B[N], Tmp[N];
bool cmp1(const water &a, const water &b) { return a.t < b.t; }
bool cmp2(const water &a, const water &b) { return a.t > b.t; }
int dcmp(long double x) { return (fabs(x) < eps) ? 0 : x < 0 ? -1 : 1; }
int main() {
  scanf("%d%d", &n, &T);
  for (int i = 1; i <= n; i++) scanf("%d", &Tmp[i].a);
  for (int i = 1; i <= n; i++) scanf("%d", &Tmp[i].t);
  for (int i = 1; i <= n; i++) {
    if (Tmp[i].t <= T)
      A[++cnt1] = Tmp[i];
    else
      B[++cnt2] = Tmp[i];
    sum1 += 1ll * Tmp[i].a * Tmp[i].t;
    sum2 += Tmp[i].a;
  }
  sort(A + 1, A + cnt1 + 1, cmp1);
  sort(B + 1, B + cnt2 + 1, cmp2);
  if (!dcmp(sum1 / sum2 - T)) printf("%.8lf", sum2), exit(0);
  int flag = 0;
  if (dcmp(sum1 / sum2 - T) < 0) {
    for (int i = 1; i <= cnt1; i++) {
      long double del = (sum1 - T * sum2) / (A[i].t - T);
      if (dcmp(del - A[i].a) <= 0) {
        sum1 -= del * A[i].t;
        sum2 -= del;
        flag = 1;
        break;
      } else
        sum1 -= 1ll * A[i].a * A[i].t, sum2 -= A[i].a;
    }
  } else {
    for (int i = 1; i <= cnt2; i++) {
      long double del = (sum1 - T * sum2) / (B[i].t - T);
      if (dcmp(del - B[i].a) <= 0) {
        sum1 -= del * B[i].t;
        sum2 -= del;
        flag = 1;
        break;
      } else
        sum1 -= 1ll * B[i].a * B[i].t, sum2 -= B[i].a;
    }
  }
  if (flag)
    printf("%.8lf\n", sum2);
  else
    puts("0.000000");
  return 0;
}
