#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1);
struct Point {
  double x, y;
  Point(double _x = 0, double _y = 0) { x = _x, y = _y; }
  double len() { return sqrt(x * x + y * y); }
} p[100010];
Point operator-(const Point& a, const Point& b) {
  return Point(a.x - b.x, a.y - b.y);
}
double operator*(const Point& a, const Point& b) {
  return a.x * b.x + a.y * b.y;
}
double operator^(const Point& a, const Point& b) {
  return a.x * b.y - a.y * b.x;
}
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 dist2(Point s, Point a, Point b) {
  if ((b - a) * (s - a) < 0 || (a - b) * (s - b) < 0)
    return min(dist(s, a), dist(s, b));
  return fabs(((s - a) ^ (b - a))) / (b - a).len();
}
int main() {
  int n;
  Point P;
  scanf("%d %lf %lf", &n, &P.x, &P.y);
  double R = 0, r = 1e9;
  for (int i = 1; i <= n; i++) {
    scanf("%lf %lf", &p[i].x, &p[i].y);
    R = max(R, dist(p[i], P));
  }
  for (int i = 1; i <= n; i++) r = min(r, dist2(P, p[i], p[i % n + 1]));
  printf("%.10lf\n", PI * R * R - PI * r * r);
  return 0;
}
