#include <bits/stdc++.h>
using namespace std;
int n, i;
double p[2], poly[100005][2], minD = 1e18, maxD = 0, d, answer, lo, hi,
                              EPS = 1e-12, mid1, mid2, x, y, d1, d2;
int main() {
  scanf("%d %lf %lf", &n, &p[0], &p[1]);
  for (i = 0; i < n; i++) {
    scanf("%lf %lf", &poly[i][0], &poly[i][1]);
    d = (poly[i][0] - p[0]) * (poly[i][0] - p[0]) +
        (poly[i][1] - p[1]) * (poly[i][1] - p[1]);
    maxD = max(maxD, d);
  }
  for (i = 0; i < n; i++) {
    lo = 0;
    hi = 1;
    while (hi - lo > EPS) {
      mid1 = lo + (hi - lo) / 3;
      mid2 = mid1 + (hi - lo) / 3;
      x = poly[i][0] + (poly[(i + 1) % n][0] - poly[i][0]) * mid1;
      y = poly[i][1] + (poly[(i + 1) % n][1] - poly[i][1]) * mid1;
      d1 = (x - p[0]) * (x - p[0]) + (y - p[1]) * (y - p[1]);
      x = poly[i][0] + (poly[(i + 1) % n][0] - poly[i][0]) * mid2;
      y = poly[i][1] + (poly[(i + 1) % n][1] - poly[i][1]) * mid2;
      d2 = (x - p[0]) * (x - p[0]) + (y - p[1]) * (y - p[1]);
      if (d1 < d2)
        hi = mid2;
      else
        lo = mid1;
    }
    d = d1;
    minD = min(minD, d);
  }
  answer = acos(-1.0) * (maxD - minD);
  printf("%.18lf\n", answer);
  return 0;
}
