#include <bits/stdc++.h>
using namespace std;
const long double pi = acos(-1);
struct point {
  long double x, y;
  point(long double x = 0, long double y = 0) : x(x), y(y) {}
  point operator+(const point &o) const { return point(x + o.x, y + o.y); }
  point operator-(const point &o) const { return point(x - o.x, y - o.y); }
  point &operator+=(const point &o) {
    x += o.x, y += o.y;
    return *this;
  }
  point &operator-=(const point &o) {
    x -= o.x, y -= o.y;
    return *this;
  }
  long double operator*(const point &o) const { return (x * o.x + y * o.y); }
  point operator*(long double c) const { return point(x * c, y * c); }
  point &operator*=(long double c) {
    x *= c, y *= c;
    return *this;
  }
  long double snorm() { return (x * x + y * y); }
};
point operator*(long double c, point A) { return A * c; }
long double dist(point A, point B) { return sqrt((A - B).snorm()); }
long double dist(point X, point A, point B) {
  A -= X, B -= X;
  long double t = (A.snorm() - A * B) / (B - A).snorm();
  if (t < 0 || t > 1) return sqrt(min(A.snorm(), B.snorm()));
  return sqrt((t * (B - A) + A).snorm());
}
int N;
point P, a[100100];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> N >> P.x >> P.y;
  cout << fixed << setprecision(10);
  int i;
  for (i = 1; i <= N; i++) cin >> a[i].x >> a[i].y;
  a[N + 1] = a[1];
  long double maxd = 0, mind = (1 << 30);
  for (i = 1; i <= N; i++) {
    maxd = max(maxd, dist(P, a[i]));
    mind = min(mind, dist(P, a[i], a[i + 1]));
  }
  cout << pi * (maxd * maxd - mind * mind) << "\n";
  return 0;
}
