#include <bits/stdc++.h>
using namespace std;
struct pt {
  double x, y;
} ar[100010];
double md(pt v, pt w, pt p) {
  const double l2 = (w.x - v.x) * (w.x - v.x) + (w.y - v.y) * (w.y - v.y);
  if (l2 == 0.0)
    return sqrt((p.x - v.x) * (p.x - v.x) + (p.y - v.y) * (p.y - v.y));
  const double t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;
  if (t < 0.0)
    return sqrt((p.x - v.x) * (p.x - v.x) + (p.y - v.y) * (p.y - v.y));
  else if (t > 1.0)
    return sqrt((p.x - w.x) * (p.x - w.x) + (p.y - w.y) * (p.y - w.y));
  struct pt projection;
  projection.x = v.x + t * (w.x - v.x);
  projection.y = v.y + t * (w.y - v.y);
  return sqrt((p.x - projection.x) * (p.x - projection.x) +
              (p.y - projection.y) * (p.y - projection.y));
}
int main() {
  double dma = -1.0, dmi = 1e20;
  int n;
  scanf("%d", &n);
  int px, py;
  scanf("%d %d", &px, &py);
  double PX = px, PY = py;
  pt P;
  P.x = PX;
  P.y = PY;
  for (int i = 0; i < n; i++) {
    int x, y;
    scanf("%d %d", &x, &y);
    double X = x, Y = y;
    ar[i].x = X;
    ar[i].y = Y;
    dma = max(dma, (X - PX) * (X - PX) + (Y - PY) * (Y - PY));
    if (i != 0)
      dmi = min(dmi, md(ar[i], ar[i - 1], P) * md(ar[i], ar[i - 1], P));
  }
  dmi = min(dmi, md(ar[n - 1], ar[0], P) * md(ar[n - 1], ar[0], P));
  printf("%.10lf\n", acos(-1.0) * (dma - dmi));
  return 0;
}
