#include <bits/stdc++.h>
double sq(double x) { return x * x; }
int dbg = 1;
using namespace std;
pair<int, int> arr[100005];
double shortest(int x, int y, int a, int b) {
  double x1 = x, y1 = y, x2 = a, y2 = b;
  if (x1 == x2)
    if (y1 * y2 <= 0)
      return sq(x1);
    else
      return sq(min(y1, y2)) + sq(x1);
  double m = (y2 - y1) / (x2 - x1);
  double c = y1 - m * x1;
  if ((m * y1 + x1) * (m * y2 + x2) < 0) {
    double x, y;
    x = -1 * (m * c) / (1 + sq(m));
    y = c / (1 + sq(m));
    return sq(x) + sq(y);
  }
  return min(sq(x1) + sq(y1), sq(x2) + sq(y2));
}
int main() {
  int n, x, y;
  double mini = 1e15, maxi = 0, pi = 3.1415926535897932;
  cin >> n >> x >> y;
  for (int i = 0; i < n; i++) {
    scanf("%d %d", &arr[i].first, &arr[i].second);
    ;
    arr[i].first -= x;
    arr[i].second -= y;
  }
  for (int i = 0; i < n - 1; i++) {
    mini = min(mini, shortest(arr[i].first, arr[i].second, arr[i + 1].first,
                              arr[i + 1].second));
    maxi = max(maxi, sq(arr[i].first) + sq(arr[i].second));
  }
  maxi = max(maxi, sq(arr[n - 1].first) + sq(arr[n - 1].second));
  mini = min(mini, shortest(arr[0].first, arr[0].second, arr[n - 1].first,
                            arr[n - 1].second));
  printf("%.9lf\n", pi * (maxi - mini));
  return 0;
}
