func_code_string: #include <bits/stdc++.h>   using namespace std;   int n;   pair<long long, long long> P, d[100000];   double rm, rM;   int main() {     scanf( %d%I64d%I64d , &n, &P.first, &P.second);     for (int i = 0; i < n; i++) {       pair<long long, long long> Q;       scanf( %I64d%I64d , &Q.first, &Q.second);       double t = (P.first - Q.first) * (P.first - Q.first) +                  (P.second - Q.second) * (P.second - Q.second);       if (i == 0)         rm = rM = t;       else {         if (rm > t) rm = t;         if (rM < t) rM = t;       }       d[i] = Q;     }     for (int i = 0; i < n; i++) {       int j = (i + 1) % n;       pair<long long, long long> Q =           make_pair(d[j].first - d[i].first, d[j].second - d[i].second);       double t =           Q.first * (P.first - d[i].first) + Q.second * (P.second - d[i].second);       t /= (Q.first * Q.first + Q.second * Q.second);       if (0 <= t && t <= 1) {         long long a = d[j].second - d[i].second;         long long b = -(d[j].first - d[i].first);         long long c = -(a * d[i].first + b * d[i].second);         double t = (a * P.first + b * P.second + c);         t = t * t / (a * a + b * b);         if (t < rm) rm = t;       }     }     double r = rM - rm;     printf( %.9f n , r * 3.1415926535897932384626433832795);     return 0;   }   