#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
const int mod = 1e9 + 7;
const int inf = 1e9 + 7;
double dist(double a, double b, double x, double y) {
  return sqrt((x - a) * (x - a) + (y - b) * (y - b));
}
int n, i;
double px, py, a1, a2, b1, b2, c1, c2, x1, x2, asfdasgas, y2, t, x, y,
    r1 = 2e9, r2, dotx, doty;
double A[N], B[N];
int main() {
  scanf("%d %lf %lf", &n, &px, &py);
  for (i = 1; i <= n; i++) scanf("%lf %lf", A + i, B + i);
  A[n + 1] = A[1];
  B[n + 1] = B[1];
  for (i = 1; i <= n; i++) {
    x1 = A[i];
    x2 = A[i + 1];
    asfdasgas = B[i];
    y2 = B[i + 1];
    a1 = y2 - asfdasgas;
    b1 = x1 - x2;
    c1 = -a1 * x1 - b1 * asfdasgas;
    a2 = x2 - x1;
    b2 = y2 - asfdasgas;
    c2 = -a2 * px - b2 * py;
    y = (a2 * c1 - a1 * c2) / (a1 * b2 - b1 * a2);
    x = (b1 * c2 - b2 * c1) / (b2 * a1 - b1 * a2);
    if (x >= min(x1, x2) and x <= max(x1, x2) and y >= min(asfdasgas, y2) and
        y <= max(asfdasgas, y2)) {
      t = dist(px, py, x, y);
      if (t <= r1) {
        r1 = t;
        dotx = x;
        doty = y;
      }
    } else {
      t = dist(px, py, x1, asfdasgas);
      if (t <= r1) {
        r1 = t;
        dotx = x1;
        doty = asfdasgas;
      }
      t = dist(px, py, x2, y2);
      if (t <= r1) {
        r1 = t;
        dotx = x2;
        doty = y2;
      }
    }
  }
  for (i = 1; i <= n; i++) r2 = max(r2, dist(px, py, A[i], B[i]));
  printf("%.8lf", acos(-1) * r2 * r2 - acos(-1) * r1 * r1);
}
