func_code_string: #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;   }   