#include <bits/stdc++.h>   using namespace std;   const double PI = acos(-1);   pair<double, double> R[100001], P;   double dist(pair<double, double> a, pair<double, double> b) {     return (a.first - b.first) * (a.first - b.first) +            (a.second - b.second) * (a.second - b.second);   }   double dist(pair<double, double> a, pair<double, double> b,               pair<double, double> P) {     double A = sqrt(dist(a, b));     double B = sqrt(dist(a, P));     double C = sqrt(dist(b, P));     double p = (A + B + C) / 2;     double Area = sqrt(p * (p - A) * (p - B) * (p - C));     double ans = (Area * 2.0 / A);     if (B > C && B > A) return B * B;     if (C > B && C > A) return C * C;     return ans * ans;   }   int main() {     if (fopen( input.txt ,  r )) {       freopen( input.txt ,  r , stdin);       freopen( output.txt ,  w , stdout);     }     int N;     double Min = 1e50, Max = 0;     scanf( %d , &N);     scanf( %lf%lf , &P.first, &P.second);     for (int i = 0; i < N; ++i) {       scanf( %lf%lf , &R[i].first, &R[i].second);       Min = min(Min, dist(R[i], P));       Max = max(Max, dist(R[i], P));       if (!i) continue;       Min = min(Min, dist(R[i], R[i - 1], P));       Max = max(Max, dist(R[i], R[i - 1], P));     }     Min = min(Min, dist(R[0], R[N - 1], P));     Max = max(Max, dist(R[0], R[N - 1], P));     printf( %lf , Max * PI - Min * PI);     return 0;   }   