func_code_string: #include <bits/stdc++.h>   using namespace std;   const long double pi = acos(-1);   struct point {     long double x, y;     point(long double x = 0, long double y = 0) : x(x), y(y) {}     point operator+(const point &o) const { return point(x + o.x, y + o.y); }     point operator-(const point &o) const { return point(x - o.x, y - o.y); }     point &operator+=(const point &o) {       x += o.x, y += o.y;       return *this;     }     point &operator-=(const point &o) {       x -= o.x, y -= o.y;       return *this;     }     long double operator*(const point &o) const { return (x * o.x + y * o.y); }     point operator*(long double c) const { return point(x * c, y * c); }     point &operator*=(long double c) {       x *= c, y *= c;       return *this;     }     long double snorm() { return (x * x + y * y); }   };   point operator*(long double c, point A) { return A * c; }   long double dist(point A, point B) { return sqrt((A - B).snorm()); }   long double dist(point X, point A, point B) {     A -= X, B -= X;     long double t = (A.snorm() - A * B) / (B - A).snorm();     if (t < 0 || t > 1) return sqrt(min(A.snorm(), B.snorm()));     return sqrt((t * (B - A) + A).snorm());   }   int N;   point P, a[100100];   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cin >> N >> P.x >> P.y;     cout << fixed << setprecision(10);     int i;     for (i = 1; i <= N; i++) cin >> a[i].x >> a[i].y;     a[N + 1] = a[1];     long double maxd = 0, mind = (1 << 30);     for (i = 1; i <= N; i++) {       maxd = max(maxd, dist(P, a[i]));       mind = min(mind, dist(P, a[i], a[i + 1]));     }     cout << pi * (maxd * maxd - mind * mind) <<   n ;     return 0;   }   