func_code_string: #include <bits/stdc++.h>   const double PI = acos(-1);   int N;   long long A;   struct point {     long long x, y;   } p[100001];   struct line {     double start, end;   } q[100001];   inline long long sqr(long long x) { return x * x; }   inline double tan_360(double x, double y) {     if (x == 0) return PI * (y > 0 ? 0.5 : 1.5);     if (y == 0) return PI * (x > 0 ? 0.0 : 1.0);     double ans = atan(y / x);     if (x > 0 && y > 0) return ans;     if (x < 0 && y > 0) return ans + PI;     if (x < 0 && y < 0) return ans + PI;     return ans + PI * 2;   }   bool check(double mid) {     int L = 0;     for (int i = 1; i <= N; i++)       if (sqrt(sqr(A + p[i].x) + sqr(p[i].y)) <=           mid - sqrt(sqr(A - p[i].x) + sqr(p[i].y)))         return true;     for (int i = 1; i <= N; i++) {       double R1 = mid, R2 = sqrt(sqr(A - p[i].x) + sqr(p[i].y)),              dis = sqrt(sqr(A + p[i].x) + sqr(p[i].y));       if (R1 + R2 > dis && R1 + dis > R2 && R2 + dis > R1) {         double mid_angle = tan_360(p[i].x + A, p[i].y),                dif = acos((R1 * R1 + dis * dis - R2 * R2) / (2 * R1 * dis));         q[++L] = {mid_angle < dif ? mid_angle - dif + 2 * PI : mid_angle - dif,                   mid_angle + dif >= 2 * PI ? mid_angle + dif - 2 * PI                                             : mid_angle + dif};         if (q[L].start > q[L].end) std::swap(q[L].start, q[L].end);       }     }     std::sort(q + 1, q + L + 1, [](const line &a, const line &b) {       return a.start < b.start || a.start == b.start && a.end < b.end;     });     static int stack[100001];     int D = 0;     for (int i = 1; i <= L; i++) {       while (D && q[stack[D]].end < q[i].start) D--;       if (D && q[stack[D]].end < q[i].end) return true;       stack[++D] = i;     }     return false;   }   int main() {     scanf( %d%lld , &N, &A);     for (int i = 1; i <= N; i++) scanf( %lld%lld , &p[i].x, &p[i].y);     double l = 0, r = A * 2;     for (int T = 55; T--;) {       double mid = (l + r) / 2;       (check(mid) ? r : l) = mid;     }     printf( %.10lf n , l);     return 0;   }   