#include <bits/stdc++.h>
using namespace std;
struct p {
  double x, y;
} a[100005];
double x, y;
int main() {
  int n;
  while (~scanf("%d%lf%lf", &n, &x, &y)) {
    double r = 1000000000, R = 0;
    for (int i = 1; i <= n; i++) {
      scanf("%lf%lf", &a[i].x, &a[i].y);
      r = min(r,
              sqrt((a[i].x - x) * (a[i].x - x) + (a[i].y - y) * (a[i].y - y)));
      R = max(R,
              sqrt((a[i].x - x) * (a[i].x - x) + (a[i].y - y) * (a[i].y - y)));
    }
    a[0].x = a[n].x, a[0].y = a[n].y;
    for (int i = 1; i <= n; i++) {
      if ((a[i - 1].x - a[i].x) * (x - a[i].x) +
              (a[i - 1].y - a[i].y) * (y - a[i].y) <=
          0)
        continue;
      if ((a[i].x - a[i - 1].x) * (x - a[i - 1].x) +
              (a[i].y - a[i - 1].y) * (y - a[i - 1].y) <=
          0)
        continue;
      double k, k2;
      k = sqrt((a[i].x - a[i - 1].x) * (a[i].x - a[i - 1].x) +
               (a[i].y - a[i - 1].y) * (a[i].y - a[i - 1].y));
      k2 = fabs((a[i - 1].x - x) * (a[i].y - y) -
                (a[i - 1].y - y) * (a[i].x - x));
      r = min(r, k2 / k);
    }
    printf("%.15lf\n", (R * R - r * r) * acos(-1.0));
  }
  return 0;
}
