#include <bits/stdc++.h>
using namespace std;
struct Line {
  int a, b;
  long long c;
};
int n;
pair<int, int> P, A[100005];
double d, rmin = 1e10, rmax = 0;
long long det(long long a11, long long a12, long long a21, long long a22) {
  return a11 * a22 - a12 * a21;
}
bool pointInSegment(pair<double, double> P, pair<int, int> A,
                    pair<int, int> B) {
  int mnx = min(A.first, B.first), mxx = max(A.first, B.first);
  int mny = min(A.second, B.second), mxy = max(A.second, B.second);
  return mnx - 1e-8 < P.first && P.first - 1e-8 < mxx &&
         mny - 1e-8 < P.second && P.second - 1e-8 < mxy;
}
double dist(pair<double, double> A, pair<double, double> B) {
  double dx = A.first - B.first;
  double dy = A.second - B.second;
  return sqrt(1LL * dx * dx + 1LL * dy * dy);
}
Line getLine(pair<int, int> A, pair<int, int> B) {
  Line ans;
  ans.a = A.second - B.second;
  ans.b = B.first - A.first;
  ans.c = 1LL * ans.a * A.first + 1LL * ans.b * A.second;
  return ans;
}
pair<double, double> getIntersection(Line l1, Line l2) {
  long long dets = det(l1.a, l1.b, l2.a, l2.b);
  long long detx = det(l1.c, l1.b, l2.c, l2.b);
  long long dety = det(l1.a, l1.c, l2.a, l2.c);
  assert(dets);
  return make_pair(1.0 * detx / dets, 1.0 * dety / dets);
}
pair<double, double> getClosestPoint(pair<int, int> P, pair<int, int> B,
                                     pair<int, int> C) {
  Line l = getLine(B, C);
  Line l2 = l;
  swap(l2.a, l2.b);
  l2.a = -l2.a;
  l2.c = 1LL * l2.a * P.first + 1LL * l2.b * P.second;
  return getIntersection(l, l2);
}
int main() {
  scanf("%d %d %d", &n, &P.first, &P.second);
  for (int i = 1; i <= n; ++i) {
    scanf("%d %d", &A[i].first, &A[i].second);
    d = dist(A[i], P);
    rmin = min(rmin, d);
    rmax = max(rmax, d);
  }
  A[0] = A[n];
  for (int i = 1; i <= n; ++i) {
    pair<double, double> B = getClosestPoint(P, A[i - 1], A[i]);
    if (pointInSegment(B, A[i - 1], A[i])) {
      d = dist(B, P);
      rmin = min(rmin, d);
      rmax = max(rmax, d);
    }
  }
  printf("%.20f\n", acos(-1) * (rmax * rmax - rmin * rmin));
  return 0;
}
