func_code_string: #include <bits/stdc++.h>   using namespace std;   int n;   double V1;   double V2[100005];   double L[100005];   double D[100005];   double X[100005];   bool check(double T) {     bool ok1 = false;     bool ok1b = false;     bool ok2 = false;     bool ok2b = false;     double l = 0;     double r = 1000000;     vector<pair<double, double> > V;     V.clear();     for (int i = 1; i <= n; i++) {       if (D[i] == 1 && !ok1) {         if (L[i] <= V2[i] * T) {           ok1 = true;         } else {           double TS = T - L[i] / (V1 + V2[i]);           double MS = 1 / (V1 - V2[i]) - V2[i] / (V1 * V1 - V2[i] * V2[i]);           if (TS < 0) continue;           ok1b = true;           double x;           if (TS > MS * 10000000)             x = 1000000;           else             x = TS / MS;           if (x < 1) x = 0;           if (X[i] > l) l = X[i];           if (X[i] + x < r) r = X[i] + x;           V.push_back(make_pair(X[i], X[i] + x));         }       }     }     for (int i = 1; i <= n; i++) {       if (D[i] == 2 && !ok2) {         if (L[i] <= V2[i] * T) {           ok2 = true;         } else {           double TS = T - L[i] / (V1 + V2[i]);           double MS = 1 / (V1 - V2[i]) - V2[i] / (V1 * V1 - V2[i] * V2[i]);           if (TS < 0) continue;           ok2b = true;           double x;           if (TS > MS * 10000000)             x = 1000000;           else             x = TS / MS;           if (x < 1) x = 0;           if (X[i] - x > l) l = X[i] - x;           if (X[i] < r) r = X[i];           for (int j = 0; j < V.size(); j++)             if ((V[j].first <= X[i] && X[i] <= V[j].second) ||                 (V[j].first <= (X[i] - x) && (X[i] - x) <= V[j].second)) {               return true;             }         }       }     }     return ((ok1 && ok2b) || (ok2 && ok1b) || (ok1 && ok2));   }   int main() {     cin >> n >> V1;     for (int i = 1; i <= n; i++) {       cin >> X[i] >> V2[i] >> D[i];       if (D[i] == 1)         L[i] = X[i];       else         L[i] = 1000000 - X[i];     }     double l = 0;     double r = 10000000;     while (0.0000001 <= r - l) {       double m = (l + r) / 2;       if (check(m))         r = m - 0.00000001;       else         l = m + 0.00000001;     }     printf( %0.8f n , r);     return 0;   }   