#include <bits/stdc++.h>
using namespace std;
struct __timestamper {};
struct point {
  int x, y;
  point() { x = y = 0; }
  point(int x, int y) : x(x), y(y) {}
};
point operator-(const point& a, const point& b) {
  return point(a.x - b.x, a.y - b.y);
}
long long sp(const point& a, const point& b) {
  return a.x * 1LL * b.x + a.y * 1LL * b.y;
}
long long vp(const point& a, const point& b) {
  return a.x * 1LL * b.y - a.y * 1LL * b.x;
}
double len(const point& a) { return sqrt(sp(a, a)); }
double dist(const point& a, const point& b) {
  if (sp(b - a, point() - a) > 0 && sp(a - b, point() - b) > 0) {
    return abs(vp(a, b)) / len(b - a);
  }
  return min(len(a), len(b));
}
int main() {
  int n;
  scanf("%d", &n);
  point p;
  scanf("%d%d", &p.x, &p.y);
  vector<point> v(n);
  for (point& pt : v) {
    scanf("%d %d", &pt.x, &pt.y);
    pt = pt - p;
  }
  double mind = 1e100, maxd = -1e100;
  for (int i = 0; i < n; i++) {
    maxd = max(maxd, len(v[i]));
    mind = min(mind, dist(v[i], v[(i + 1) % n]));
  };
  printf("%.10f\n", 3.14159265358979323846 * (maxd * maxd - mind * mind));
  return 0;
}
