func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 5;   const int mod = 1e9 + 7;   const int inf = 1e9 + 7;   double dist(double a, double b, double x, double y) {     return sqrt((x - a) * (x - a) + (y - b) * (y - b));   }   int n, i;   double px, py, a1, a2, b1, b2, c1, c2, x1, x2, asfdasgas, y2, t, x, y,       r1 = 2e9, r2, dotx, doty;   double A[N], B[N];   int main() {     scanf( %d %lf %lf , &n, &px, &py);     for (i = 1; i <= n; i++) scanf( %lf %lf , A + i, B + i);     A[n + 1] = A[1];     B[n + 1] = B[1];     for (i = 1; i <= n; i++) {       x1 = A[i];       x2 = A[i + 1];       asfdasgas = B[i];       y2 = B[i + 1];       a1 = y2 - asfdasgas;       b1 = x1 - x2;       c1 = -a1 * x1 - b1 * asfdasgas;       a2 = x2 - x1;       b2 = y2 - asfdasgas;       c2 = -a2 * px - b2 * py;       y = (a2 * c1 - a1 * c2) / (a1 * b2 - b1 * a2);       x = (b1 * c2 - b2 * c1) / (b2 * a1 - b1 * a2);       if (x >= min(x1, x2) and x <= max(x1, x2) and y >= min(asfdasgas, y2) and           y <= max(asfdasgas, y2)) {         t = dist(px, py, x, y);         if (t <= r1) {           r1 = t;           dotx = x;           doty = y;         }       } else {         t = dist(px, py, x1, asfdasgas);         if (t <= r1) {           r1 = t;           dotx = x1;           doty = asfdasgas;         }         t = dist(px, py, x2, y2);         if (t <= r1) {           r1 = t;           dotx = x2;           doty = y2;         }       }     }     for (i = 1; i <= n; i++) r2 = max(r2, dist(px, py, A[i], B[i]));     printf( %.8lf , acos(-1) * r2 * r2 - acos(-1) * r1 * r1);   }   