func_code_string: #include <bits/stdc++.h>   using namespace std;   using point = complex<long long>;   long long cross(point a, point b) {     return a.real() * b.imag() - a.imag() * b.real();   }   long long dot(point a, point b) {     return a.real() * b.real() + a.imag() * b.imag();   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(nullptr);     cout << fixed << setprecision(8);     int n, px, py;     cin >> n >> px >> py;     point p = point(px, py);     double maxi = 0.0, mini = HUGE_VAL;     vector<point> polygon(n);     for (auto &v : polygon) {       int x, y;       cin >> x >> y;       v = point(x, y);       maxi = max(maxi, M_PI * norm(v - p));     }     for (int i = 0; i < n; ++i) {       int j = (i + 1) % n;       point a = polygon[i], b = polygon[j];       point v = a - b;       if ((dot(v, a) < dot(v, p)) == (dot(v, p) < dot(v, b))) {         mini = min(mini, M_PI * cross(v, p - b) * cross(v, p - b) / norm(v));       } else {         mini = min(mini, M_PI * min(norm(a - p), norm(b - p)));       }     }     cout << maxi - mini <<   n ;   }   