#include <bits/stdc++.h>   using namespace std;   #pragma comment(linker,  /STACK:1024000000,1024000000 )   int _MAX(int a, int b) { return a > b ? a : b; }   int _MIN(int a, int b) { return a > b ? b : a; }   int Scan() {     int res = 0, flag = 0;     char ch;     if ((ch = getchar()) ==  - )       flag = 1;     else if (ch >=  0  && ch <=  9 )       res = ch -  0 ;     while ((ch = getchar()) >=  0  && ch <=  9 ) res = res * 10 + (ch -  0 );     return flag ? -res : res;   }   void Out(int a) {     if (a < 0) {       putchar( - );       a = -a;     }     if (a >= 10) Out(a / 10);     putchar(a % 10 +  0 );   }   long long a[100005][2];   long long dis(long long x1, long long y1, long long x2, long long y2) {     return (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);   }   int main() {     long long n, px, py, ma = 0;     double mi = 1e16;     scanf( %lld%lld%lld , &n, &px, &py);     for (int i = 1; i <= n; ++i) {       scanf( %lld%lld , &a[i][0], &a[i][1]);       long long d = dis(a[i][0], a[i][1], px, py);       mi = min(mi, (double)d);       ma = max(ma, d);     }     a[n + 1][0] = a[1][0], a[n + 1][1] = a[1][1];     for (int i = 1; i <= n; ++i) {       long long A2 = dis(px, py, a[i][0], a[i][1]);       long long B2 = dis(px, py, a[i + 1][0], a[i + 1][1]);       long long C2 = dis(a[i][0], a[i][1], a[i + 1][0], a[i + 1][1]);       double A = sqrt(A2), B = sqrt(B2), C = sqrt(C2);       if (C2 + B2 > A2 && C2 + A2 > B2) {         double P = (A + B + C) / 2;         double S = sqrt(P * (P - A) * (P - B) * (P - C));         double H = S / C * 2;         mi = min(mi, H * H);       }     }     printf( %.10lf n , acos(-1.0) * (ma - mi));     return 0;   }   