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