#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;
}
