#include <bits/stdc++.h>
using namespace std;
class point {
 public:
  double x, y;
  double dis(point& p);
};
double x[100000];
const double PI = acos(-1.0);
double dish(point& p, point& a, point& b) {
  double aa = a.dis(p), bb = b.dis(p), cc = a.dis(b);
  double q = (aa + bb + cc) / 2;
  double s = sqrt(q * (q - aa) * (q - bb) * (q - cc));
  double h = 2 * s / cc;
  return h;
}
point abc[1000000];
int main() {
  int n, i;
  cin >> n;
  point p;
  cin >> p.x >> p.y;
  for (i = 0; i < n; i++) {
    cin >> abc[i].x >> abc[i].y;
    x[i] = abc[i].dis(p);
  }
  abc[i] = abc[0];
  sort(x, x + n);
  double r1 = x[0], r2 = x[n - 1];
  for (int j = 0; j <= n; j++) {
    double aa = abc[j].dis(p), bb = abc[j + 1].dis(p),
           cc = abc[j].dis(abc[j + 1]);
    if (aa * aa + cc * cc <= bb * bb || cc * cc + bb * bb <= aa * aa) continue;
    double h = dish(p, abc[j], abc[j + 1]);
    if (h < r1) r1 = h;
  }
  printf("%.20f\n", PI * (r2 * r2 - r1 * r1));
  return 0;
}
double point::dis(point& p) {
  return sqrt(((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y)));
}
