#include <bits/stdc++.h>
using namespace std;
long double dist(pair<long double, long double> a,
                 pair<long double, long double> b) {
  return sqrtl((a.first - b.first) * (a.first - b.first) +
               (a.second - b.second) * (a.second - b.second));
}
long double per(pair<long double, long double> a,
                pair<long double, long double> b,
                pair<long double, long double> c) {
  long double A = (a.second - b.second);
  long double B = -(a.first - b.first);
  long double C = -(A * a.first + B * a.second);
  long double t = (A * c.first + B * c.second + C) / sqrtl(A * A + B * B);
  long double e = -(t / sqrtl(A * A + B * B)) * A + c.first;
  if ((e >= a.first && e <= b.first) || (e <= a.first && e >= b.first)) {
    return abs(t);
  } else
    return -1;
}
int main() {
  long long int n;
  long double x1, y1;
  cin >> n >> x1 >> y1;
  vector<pair<long double, long double>> ar;
  long double a, b;
  for (int x = 0; x < n; x++) {
    cin >> a >> b;
    ar.push_back({a, b});
  }
  long double ma = 0;
  long double mi = 1000000000000000000;
  for (int x = 0; x < n; x++) {
    long double d = dist(ar[x], {x1, y1});
    ma = max(d, ma);
    mi = min(d, mi);
  }
  for (int x = 1; x < n; x++) {
    long double y = per(ar[x - 1], ar[x], {x1, y1});
    if (y > 0) {
      ma = max(y, ma);
      mi = min(y, mi);
    }
  }
  long double ye = per(ar[n - 1], ar[0], {x1, y1});
  if (ye > 0) {
    ma = max(ye, ma);
    mi = min(ye, mi);
  }
  long double g = 3.141592653589793 * (ma * ma - mi * mi);
  cout << fixed;
  cout << setprecision(15) << g;
}
