#include <bits/stdc++.h>
using namespace std;
const double pi = 3.14159265358979323846;
struct P {
  double x, y;
} p[200111];
double dist(double x1, double y1, double x2, double y2) {
  return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
}
double distForInterval(double x1, double y1, double x2, double y2, double x3,
                       double y3) {
  double a = dist(x1, y1, x2, y2);
  double b = dist(x1, y1, x3, y3);
  double c = dist(x2, y2, x3, y3);
  if (a >= b + c) return sqrt(b);
  if (b >= a + c) return sqrt(a);
  a = sqrt(a);
  b = sqrt(b);
  c = sqrt(c);
  double p = (a + b + c) / 2;
  double s = sqrt(p * (p - a) * (p - b) * (p - c));
  return s * 2 / c;
}
int main() {
  int n;
  double px, py;
  scanf("%d%lf%lf", &n, &px, &py);
  for (int i = 0; i < n; i++) {
    scanf("%lf%lf", &p[i].x, &p[i].y);
  }
  p[n] = p[0];
  double minLen = 1e18;
  double maxLen = 0;
  for (int i = 0; i < n; i++) {
    double len =
        distForInterval(px, py, p[i].x, p[i].y, p[i + 1].x, p[i + 1].y);
    if (len < minLen) minLen = len;
    if (len > maxLen) maxLen = len;
    len = sqrt(dist(px, py, p[i].x, p[i].y));
    if (len < minLen) minLen = len;
    if (len > maxLen) maxLen = len;
  }
  printf("%.10f\n", pi * (maxLen * maxLen - minLen * minLen));
}
