func_code_string: #include <bits/stdc++.h>   using namespace std;   const long double PI = 3.14159265358979323846264338327950288419716939937510,                     EPS = 1e-9;   const int MAX = 1 << 17;   struct prav {     long double a, b, c;   };   pair<int, int> sred;   long double Sq(long double x) { return x * x; }   long double Dist(pair<int, int> a, pair<int, int> b) {     return sqrt(Sq(a.first - b.first) + Sq(a.second - b.second));   }   long double DistPrav(prav p, pair<int, int> toc) {     return abs(p.a * toc.first + p.b * toc.second + p.c) /            sqrt((Sq(p.a) + Sq(p.b)));   }   prav Pravac(pair<int, int> a, pair<int, int> b) {     return prav{         (long double)b.second - a.second, (long double)a.first - b.first,         (long double)b.first * a.second - (long double)a.first * b.second};   }   pair<int, int> tocke[MAX];   int main() {     int n;     scanf( %d%d%d , &n, &sred.first, &sred.second);     for (int i = 0; i < n; i++) scanf( %d%d , &tocke[i].first, &tocke[i].second);     long double minn = 1e15, maxx = -1e15;     for (int i = 0; i < n; i++) {       long double dd = Dist(sred, tocke[i]);       minn = min(minn, dd);       maxx = max(maxx, dd);       int slj = (i + 1) % n;       if (Sq(Dist(tocke[i], tocke[slj])) + Sq(Dist(tocke[i], sred)) + EPS >               Sq(Dist(tocke[slj], sred)) &&           Sq(Dist(tocke[i], tocke[slj])) + Sq(Dist(tocke[slj], sred)) + EPS >               Sq(Dist(tocke[i], sred))) {         minn = min(minn, DistPrav(Pravac(tocke[i], tocke[slj]), sred));       }     }     printf( %.15lf n , (double)((Sq(maxx) - Sq(minn)) * PI));     return 0;   }   