#include <bits/stdc++.h>
using namespace std;
long double dist, mx, mn;
int n;
long long x, y, a[100010], b[100010];
int main() {
  scanf("%d%I64d%I64d", &n, &x, &y);
  mx = 0;
  mn = 1000000000;
  for (int i = 1; i <= n; i++) {
    scanf("%I64d%I64d", &a[i], &b[i]);
    dist = sqrt((x - a[i]) * (x - a[i]) + (y - b[i]) * (y - b[i]));
    if (dist > mx) mx = dist;
  }
  a[n + 1] = a[1];
  b[n + 1] = b[1];
  for (int i = 1; i <= n; i++) {
    if ((a[i] - x) * (a[i] - a[i + 1]) + (b[i] - y) * (b[i] - b[i + 1]) < 0)
      dist = sqrt((x - a[i]) * (x - a[i]) + (y - b[i]) * (y - b[i]));
    else if ((a[i + 1] - x) * (a[i + 1] - a[i]) +
                 (b[i + 1] - y) * (b[i + 1] - b[i]) <
             0)
      dist = sqrt((x - a[i + 1]) * (x - a[i + 1]) +
                  (y - b[i + 1]) * (y - b[i + 1]));
    else
      dist = abs(a[i] * b[i + 1] + a[i + 1] * y + x * b[i] - a[i] * y -
                 a[i + 1] * b[i] - x * b[i + 1]) /
             sqrt((a[i] - a[i + 1]) * (a[i] - a[i + 1]) +
                  (b[i] - b[i + 1]) * (b[i] - b[i + 1]));
    if (dist < mn) mn = dist;
  }
  long double ans = 3.14159265358979324 * (mx * mx - mn * mn);
  printf("%.18f", (double)(ans));
}
