#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
double n, x, y;
double a[100005], b[100005];
double ma = 0, mi = 0x7fffffffffffffff;
double pos1, pos2, pos3, pos4;
bool in() {
  int i, j = n - 1;
  bool oddNodes = 0;
  for (i = 0; i < n; i++) {
    if (b[i] < y && b[j] >= y || b[j] < y && b[i] >= y) {
      if (a[i] + (y - b[i]) / (b[j] - b[i]) * (a[j] - a[i]) < x) {
        oddNodes = !oddNodes;
      }
    }
    j = i;
  }
  return oddNodes;
}
double dis(double xx, double yy, double x1, double y1, double x2, double y2) {
  double cross = (x2 - x1) * (xx - x1) + (y2 - y1) * (yy - y1);
  if (cross <= 0) return -1;
  double d2 = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
  if (cross >= d2) return -1;
  double r = cross / d2;
  double px = x1 + (x2 - x1) * r;
  double py = y1 + (y2 - y1) * r;
  return (xx - px) * (xx - px) + (py - yy) * (py - yy);
}
int main() {
  cin >> n >> x >> y;
  for (int i = 0; i < n; i++) {
    cin >> a[i] >> b[i];
    double s = (a[i] - x) * (a[i] - x) + (b[i] - y) * (b[i] - y);
    if (s > ma) {
      ma = s;
    }
    if (s < mi) {
      mi = s;
    }
    if (i > 0) {
      double an = dis(x, y, a[i], b[i], a[i - 1], b[i - 1]);
      if (an > 0) {
        if (an < mi) mi = an;
        if (an > ma) ma = an;
      }
    }
    if (i == n - 1) {
      double an = dis(x, y, a[i], b[i], a[0], b[0]);
      if (an < 0) continue;
      if (an < mi) mi = an;
      if (an > ma) ma = an;
    }
  }
  if (in())
    printf("%.7lf", (ma)*pi);
  else
    printf("%.7lf", (ma - mi) * pi);
}
