#include <bits/stdc++.h>
using namespace std;
const int oo = 0x3f3f3f3f;
int cmp(double a, double b) { return fabs(a - b) < 1e-9 ? 0 : a < b ? -1 : 1; }
struct pt {
  double x, y;
  pt(double x = 0, double y = 0) : x(x), y(y) {}
  double operator*(pt p2) { return x * p2.x + y * p2.y; }
  double operator%(pt p2) { return x * p2.y - y * p2.x; }
  pt operator+(pt p2) { return pt(x + p2.x, y + p2.y); }
  pt operator-(pt p2) { return pt(x - p2.x, y - p2.y); }
  pt operator*(double d) { return pt(x * d, y * d); }
  pt operator/(double d) { return pt(x / d, y / d); }
  double operator!() { return x * x + y * y; }
} cent, p[100009];
int n;
double mind, maxd;
pt proj(pt v, pt w) {
  double alfa = (v * w) / (w * w);
  return w * alfa;
}
double dist(pt a, pt b) {
  pt ab = b - a;
  pt ba = a - b;
  pt bc = cent - b;
  pt ac = cent - a;
  if (cmp(ac * ab, 0) <= 0) {
    return !ac;
  }
  if (cmp(bc * ba, 0) <= 0) return !bc;
  pt pr = proj(ac, ab);
  return !(ac - pr);
}
int main() {
  while (scanf("%d", &n) == 1) {
    int x, y;
    scanf("%d%d", &x, &y);
    cent = pt(x, y);
    maxd = 0;
    for (int(i) = (0); (i) < (n); ++(i)) {
      scanf("%d%d", &x, &y);
      p[i] = pt(x, y);
      maxd = max(maxd, !(p[i] - cent));
    }
    mind = 0x3f3f3f3f3f3f3f3f;
    for (int(i) = (0); (i) < (n); ++(i)) {
      pt a = p[i];
      pt b = p[(i + 1) % n];
      double opt = dist(a, b);
      mind = min(mind, opt);
    }
    double PI = acos(-1);
    double area = PI * (maxd - mind);
    printf("%.12lf\n", area);
  }
  return 0;
}
