func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 100105;   const double eps = 1e-6;   long double x1, y1_, x2, y2, mx, my, vx, vy, d, L, ans = 1e16;   vector<pair<long double, int> > V;   int X[N], Y[N], R[N], n, s = 0;   long double check(int k, long double t, int op) {     return ((sqrt(d * d + t * t) + op * R[k]) *             (sqrt(d * d + t * t) + op * R[k])) -            ((X[k] - mx - vx * t) * (X[k] - mx - vx * t)) -            ((Y[k] - my - vy * t) * (Y[k] - my - vy * t));   }   long double BI(int k, int op) {     long double l = -1e12, r = 1e12, mid, c = check(k, l, op), cc;     while (r - l > eps) {       mid = (l + r) / 2, cc = check(k, mid, op);       (c > 0 && cc > 0 || c < 0 && cc < 0) ? l = mid : r = mid;     }     return (l + r) / 2;   }   int main() {     scanf( %Lf%Lf%Lf%Lf%d , &x1, &y1_, &x2, &y2, &n);     for (int i = (1); i <= (n); ++i) scanf( %d%d%d , &X[i], &Y[i], &R[i]);     mx = (x1 + x2) / 2, my = (y1_ + y2) / 2,     L = sqrt(((x1 - x2) * (x1 - x2)) + ((y1_ - y2) * (y1_ - y2))),     vx = (y1_ - y2) / L, vy = (x2 - x1) / L, d = L / 2;     for (int i = (1); i <= (n); ++i) {       long double l = BI(i, 1), r = BI(i, -1);       if (l > r) swap(l, r);       V.push_back(make_pair(l - eps, -1)), V.push_back(make_pair(r + eps, 1));     }     V.push_back(make_pair(0, 0));     sort((V).begin(), (V).end());     for (int i = 0; i < V.size(); i++) {       s += V[i].second;       if (s == 0 || V[i].second == -1 && s == -1)         ans = min(ans, sqrt(((V[i].first) * (V[i].first)) + ((d) * (d))));     }     printf( %.12Lf n , ans);     return 0;   }   