#include <bits/stdc++.h>
using namespace std;
template <class X, class Y>
void amax(X& x, const Y& y) {
  if (x < y) x = y;
}
template <class X, class Y>
void amin(X& x, const Y& y) {
  if (x > y) x = y;
}
const int INF = 1e9 + 10;
const long long INFL = 1e18 + 10;
const int MAX = 1e5 + 10;
const long double pi = acosl(-1);
int n;
long long px, py;
long long x[MAX], y[MAX];
long double dist(long long u1, long long v1, long long u2, long long v2) {
  return sqrtl(((u1 - u2) * (u1 - u2)) + ((v1 - v2) * (v1 - v2)));
}
bool inrange(long long u1, long long v1, long long u2, long long v2,
             long long px, long long py) {
  long long dx = u2 - u1;
  long long dy = v2 - v1;
  long long vv = (px - u1) * dx + (py - v1) * dy;
  return 0 < vv && vv < dx * dx + dy * dy;
}
void process() {
  cin >> n >> px >> py;
  for (int i = 0; i < n; i++) cin >> x[i] >> y[i];
  long double mind = INFL, maxd = -INFL;
  for (int i = 0; i < n; i++) {
    amax(maxd, dist(px, py, x[i], y[i]));
    long long nx = x[(i + 1) % n], ny = y[(i + 1) % n];
    if (inrange(x[i], y[i], nx, ny, px, py)) {
      long long A = ny - y[i];
      long long B = x[i] - nx;
      long long C = x[i] * (ny - y[i]) - y[i] * (nx - x[i]);
      amin(mind, abs(A * px + B * py - C) / sqrtl(((A) * (A)) + ((B) * (B))));
    } else {
      amin(mind, dist(px, py, x[i], y[i]));
      amin(mind, dist(px, py, nx, ny));
    }
  }
  cout << pi * (((maxd) * (maxd)) - ((mind) * (mind)));
}
int main() {
  ios_base::sync_with_stdio(false);
  cout << fixed;
  cout.precision(10);
  process();
}
