#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
const double PI = acos(-1.0);
const double eps = 1e-9;
struct Point {
  double x, y;
} o, ps[maxn];
int n;
double ans1, ans2;
double dist(Point a, Point b) {
  return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
double cross(Point o, Point a, Point b) {
  return (a.x - o.x) * (b.y - o.y) - (b.x - o.x) * (a.y - o.y);
}
int main() {
  int i, j, x, y;
  Point tmp;
  scanf("%d%lf%lf", &n, &o.x, &o.y);
  for (i = 0; i < n; i++) scanf("%lf%lf", &ps[i].x, &ps[i].y);
  ps[n] = ps[0];
  ans1 = 0;
  ans2 = 1e15;
  for (i = 0; i < n; i++) {
    ans1 = max(ans1, dist(o, ps[i]));
    ans2 = min(ans2, dist(o, ps[i]));
  }
  for (i = 0; i < n; i++) {
    tmp.x = o.x + ps[i].y - ps[i + 1].y;
    tmp.y = o.y + ps[i + 1].x - ps[i].x;
    if (cross(o, tmp, ps[i]) * cross(o, tmp, ps[i + 1]) < eps) {
      ans2 =
          min(ans2, fabs(cross(o, ps[i], ps[i + 1]) / dist(ps[i], ps[i + 1])));
    }
  }
  printf("%.9f\n", PI * (ans1 * ans1 - ans2 * ans2));
  return 0;
}
