#include <bits/stdc++.h>
using namespace std;
const long long inf = INT_LEAST64_MAX;
const unsigned long long ullinf = 0x7fffffff;
double eps = 1e-10;
int mod = 1e9 + 7;
const int N = 3e6 + 10;
const double pi = acos(-1.0);
struct pt {
  double x, y;
  pt(double a, double b) : x(a), y(b) {}
};
double dist(pt a, pt b) {
  return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
struct ln {
  pt s, e;
  double a, b, c;
  ln(pt a, pt b) : s(a), e(b) {}
  void pton() {
    a = e.y - s.y;
    b = s.x - e.x;
    c = e.x * s.y - e.y * s.x;
  }
  double dis(pt t) {
    pton();
    double res = (a * t.x + b * t.y + c) / sqrt(a * a + b * b);
    double xp = (b * b * t.x - a * b * t.y - a * c) / (a * a + b * b);
    double yp = (-a * b * t.x + a * a * t.y - b * c) / (a * a + b * b);
    double xb = max(s.x, e.x);
    double yb = max(s.y, e.y);
    double xs = s.x + e.x - xb;
    double ys = s.y + e.y - yb;
    if (xp > xb + eps || xp < xs - eps || yp > yb + eps || yp < ys - eps)
      res = min(dist(t, s), dist(t, e));
    return fabs(res);
  }
};
int main() {
  int n;
  scanf("%d", &n);
  double x, y;
  cin >> x >> y;
  double e, f;
  double mir = inf, mxr = 0;
  double a, b;
  cin >> a >> b;
  e = a, f = b;
  double d1 = (a - x) * (a - x) + (b - y) * (b - y);
  mir = min(d1, mir);
  mxr = max(d1, mxr);
  for (int i = 1; i <= n - 1; i++) {
    double c, d;
    cin >> c >> d;
    double ds = pow(ln(pt(a, b), pt(c, d)).dis(pt(x, y)), 2);
    mir = min(ds, mir);
    a = c, b = d;
    double d1 = (a - x) * (a - x) + (b - y) * (b - y);
    mir = min(d1, mir);
    mxr = max(d1, mxr);
  }
  double ds = pow(ln(pt(a, b), pt(e, f)).dis(pt(x, y)), 2);
  mir = min(ds, mir);
  mxr = max(mxr, ds);
  cout << fixed << setprecision(18) << pi * (mxr - mir);
}
