func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   inline void read(T& x) {     bool fu = 0;     char c;     for (c = getchar(); c <= 32; c = getchar())       ;     if (c ==  - ) fu = 1, c = getchar();     for (x = 0; c > 32; c = getchar()) x = x * 10 + c -  0 ;     if (fu) x = -x;   };   template <class T>   inline void read(T& x, T& y) {     read(x);     read(y);   }   template <class T>   inline void read(T& x, T& y, T& z) {     read(x);     read(y);     read(z);   }   inline char getc() {     char c;     for (c = getchar(); c <= 32; c = getchar())       ;     return c;   }   const int N = 10010;   const double pi = 2 * acos(0);   const double eps = 1e-9;   int w, h, n, m, i, j, st, g;   double L0, R0, R;   long long x[N], y[N];   double d[1010][1010], an[1010][1010];   int p[N];   double c[N];   double D(int i, int j) {     return sqrt((1LL * (x[i] - x[j]) * (x[i] - x[j])) +                 (1LL * (y[i] - y[j]) * (y[i] - y[j])));   }   double geta(int i, int j) { return atan2(y[j] - y[i], x[j] - x[i]); }   bool same(double a, double b) { return abs(a - b) <= eps; }   double ans;   void add(double L, double R) {     if (R > pi) {       add(L, pi);       add(-pi, R - 2 * pi);     } else if (L < -pi) {       add(L + 2 * pi, pi);       add(-pi, R);     } else       c[++g] = L - 1e-15, c[++g] = R + 1e-15;   }   bool cmp(int x, int y) { return c[x] < c[y]; }   bool ok(double R) {     int i, j, k;     double tt;     g = 0;     c[++g] = -pi;     c[++g] = pi;     if (x[st] < R) {       tt = acos(x[st] / R);       for (k = 1; k <= 2; k++) add(-pi - tt, -pi + tt);     }     if (w - x[st] < R) {       tt = acos((w - x[st]) / R);       for (k = 1; k <= 2; k++) add(-tt, tt);     }     if (y[st] < R) {       tt = acos(y[st] / R);       for (k = 1; k <= 2; k++) add(-pi / 2 - tt, -pi / 2 + tt);     }     if (h - y[st] < R) {       tt = acos((h - y[st]) / R);       for (k = 1; k <= 2; k++) add(pi / 2 - tt, pi / 2 + tt);     }     for (i = 1; i <= n; i++)       if (i != st && d[st][i] < 2 * R && d[st][i] > eps) {         tt = acos(d[st][i] / 2 / R);         add(an[st][i] - tt, an[st][i] + tt);       }     for (i = 1; i <= g; i++) p[i] = i;     sort(p + 1, p + 1 + g, cmp);     int s = 0;     for (i = 1; i <= g; i++)       if ((s += (p[i] & 1 ? 1 : -1)) < 3 && i + 1 <= g &&           c[p[i + 1]] - c[p[i]] > eps)         return 1;     return 0;   }   int main() {     read(w, h, n);     for (i = 1; i <= n; i++) cin >> x[i] >> y[i];     for (i = 1; i <= n; i++) {       int t = rand() % i + 1;       swap(x[i], x[t]);       swap(y[i], y[t]);     }     for (i = 1; i <= n; i++)       for (j = 1; j <= n; j++) d[i][j] = D(i, j), an[i][j] = geta(i, j);     for (st = 1; st <= n; st++)       if (ok(R)) {         L0 = R;         R0 = 2e6;         while (L0 + eps < R0) {           R = (L0 + R0) / 2;           if (ok(R))             L0 = R;           else             R0 = R;         }       }     cout << fixed << setprecision(10) << R << endl;     scanf(  n );     return 0;   }   