#include <bits/stdc++.h>
using namespace std;
inline constexpr long double sq(long double x) { return x * x; }
inline constexpr long double dist(const pair<int, int> &p1,
                                  const pair<int, int> &p2) {
  return sqrt(sq(p1.first - p2.first) + sq(p1.second - p2.second));
}
int main() {
  int n;
  pair<int, int> p;
  cin >> n >> p.first >> p.second;
  vector<pair<int, int> > v(n);
  for (int i = 0; i < n; i++) cin >> v[i].first >> v[i].second;
  long double r1 = dist(v[0], p), r2 = dist(v[0], p);
  for (pair<int, int> pp : v) r2 = max(r2, dist(pp, p));
  for (int i = 0; i < n; i++) {
    pair<int, int> p1 = v[i];
    pair<int, int> p2 = v[(i + 1) % n];
    long double x0 = p.first;
    long double y0 = p.second;
    long double x1 = p1.first;
    long double y1 = p1.second;
    long double x2 = p2.first;
    long double y2 = p2.second;
    long double a = sq(x1 - x2) + sq(y1 - y2);
    long double b = 2 * ((x2 - x0) * (x1 - x2) + (y2 - y0) * (y1 - y2));
    long double c = sq(x2 - x0) + sq(y2 - y0);
    long double p = -b / a / 2;
    if (0 < p && p < 1) {
      long double q = 1 - p;
      long double x3 = p * x1 + q * x2 - x0;
      long double y3 = p * y1 + q * y2 - y0;
      long double d = sqrtl(sq(x3) + sq(y3));
      r1 = min(r1, d);
    }
  }
  long double s = acosl(-1) * (sq(r2) - sq(r1));
  cout << setprecision(18) << fixed << s << endl;
  return 0;
}
