#include <bits/stdc++.h>
using namespace std;
double dist(double x1, double y1, double x2, double y2) {
  return sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
}
int main() {
  long long n;
  double i, j, x1, y1, x, y, curx, cury, mind, maxd;
  cin >> n >> i >> j;
  cin >> x1 >> y1;
  curx = x1;
  cury = y1;
  mind = dist(i, j, x1, y1);
  maxd = dist(i, j, x1, y1);
  for (long long k = 1; k < n; k++) {
    cin >> x >> y;
    mind = min(dist(i, j, x, y), mind);
    if (((y - j) * (y - cury) + (x - curx) * (x - i)) *
            ((cury - j) * (y - cury) + (x - curx) * (curx - i)) <
        0)
      mind = min(abs((j - cury) * (x - curx) - (y - cury) * (i - curx)) /
                     sqrt((x - curx) * (x - curx) + (y - cury) * (y - cury)),
                 mind);
    maxd = max(dist(i, j, x, y), maxd);
    curx = x;
    cury = y;
  }
  if (((y1 - j) * (y1 - cury) + (x1 - curx) * (x1 - i)) *
          ((cury - j) * (y1 - cury) + (x1 - curx) * (curx - i)) <
      0)
    mind = min(abs((j - cury) * (x1 - curx) - (y1 - cury) * (i - curx)) /
                   sqrt((x1 - curx) * (x1 - curx) + (y1 - cury) * (y1 - cury)),
               mind);
  cout << fixed << setprecision(18) << acos(-1.0) * (maxd * maxd - mind * mind);
  return 0;
}
