#include <bits/stdc++.h>   using namespace std;   const int MAXN = 100005;   const double eps = 1.0e-8;   const double pi = acos(-1.0);   complex<double> p[MAXN], P;   double cross(complex<double> a, complex<double> b) {     return (conj(a) * b).imag();   }   double check(complex<double> a, complex<double> b) {     double l = 0, r = 1;     complex<double> v = b - a;     for (int i = 0; i < 50; i++) {       double mid = (l + r) * 0.5;       double midd = (mid + r) * 0.5;       complex<double> x = a + v * mid, y = a + v * midd;       if (abs(P - x) + eps < abs(P - y)) {         r = midd;       } else {         l = mid;       }     }     return abs(P - (a + v * l));   }   int main() {     int n;     cin >> n;     int x, y;     cin >> x >> y;     P = complex<double>(x, y);     for (int i = 0; i < n; i++) {       scanf( %d %d , &x, &y);       p[i] = complex<double>(x, y);     }     p[n] = p[0];     double r1 = 1.0e20, r2 = 0;     for (int i = 0; i < n; i++) {       r1 = min(r1, check(p[i], p[i + 1]));       r2 = max(r2, abs(P - p[i]));     }     printf( %.10f n , pi * (r2 * r2 - r1 * r1));     return 0;   }   