#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:1024000000,1024000000")
int _MAX(int a, int b) { return a > b ? a : b; }
int _MIN(int a, int b) { return a > b ? b : a; }
int Scan() {
  int res = 0, flag = 0;
  char ch;
  if ((ch = getchar()) == '-')
    flag = 1;
  else if (ch >= '0' && ch <= '9')
    res = ch - '0';
  while ((ch = getchar()) >= '0' && ch <= '9') res = res * 10 + (ch - '0');
  return flag ? -res : res;
}
void Out(int a) {
  if (a < 0) {
    putchar('-');
    a = -a;
  }
  if (a >= 10) Out(a / 10);
  putchar(a % 10 + '0');
}
long long a[100005][2];
long long dis(long long x1, long long y1, long long x2, long long y2) {
  return (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
}
int main() {
  long long n, px, py, ma = 0;
  double mi = 1e16;
  scanf("%lld%lld%lld", &n, &px, &py);
  for (int i = 1; i <= n; ++i) {
    scanf("%lld%lld", &a[i][0], &a[i][1]);
    long long d = dis(a[i][0], a[i][1], px, py);
    mi = min(mi, (double)d);
    ma = max(ma, d);
  }
  a[n + 1][0] = a[1][0], a[n + 1][1] = a[1][1];
  for (int i = 1; i <= n; ++i) {
    long long A2 = dis(px, py, a[i][0], a[i][1]);
    long long B2 = dis(px, py, a[i + 1][0], a[i + 1][1]);
    long long C2 = dis(a[i][0], a[i][1], a[i + 1][0], a[i + 1][1]);
    double A = sqrt(A2), B = sqrt(B2), C = sqrt(C2);
    if (C2 + B2 > A2 && C2 + A2 > B2) {
      double P = (A + B + C) / 2;
      double S = sqrt(P * (P - A) * (P - B) * (P - C));
      double H = S / C * 2;
      mi = min(mi, H * H);
    }
  }
  printf("%.10lf\n", acos(-1.0) * (ma - mi));
  return 0;
}
