#include <bits/stdc++.h>
using namespace std;
long double dist(pair<long long, long long> p1, pair<long long, long long> p2) {
  return sqrt((p2.first - p1.first) * (p2.first - p1.first) +
              (p2.second - p1.second) * (p2.second - p1.second));
}
long double getans(complex<long double> a, complex<long double> b) {
  long double s1 = (conj(a) * b).imag();
  s1 = abs(s1) / 2.0;
  return 2 * s1 / abs(b);
}
long double scalmul(long double x1, long double y1, long double x2,
                    long double y2) {
  return x1 * x2 + y1 * y2;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cout.precision(7);
  cout.setf(ios::fixed);
  int n;
  cin >> n;
  pair<long long, long long> p;
  cin >> p.first >> p.second;
  long double minR = 4e18;
  long double maxR = 0;
  vector<pair<long long, long long> > a(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i].first >> a[i].second;
    long double cur = dist(p, a[i]);
    if (cur > maxR) {
      maxR = cur;
    }
    if (cur < minR) {
      minR = cur;
    }
  }
  for (int i = 0; i < n; i++) {
    pair<long long, long long> p1 = a[i];
    pair<long long, long long> p2 = a[(i + 1) % n];
    long double x1 = p1.first;
    long double y1 = p1.second;
    long double x2 = p2.first;
    long double y2 = p2.second;
    long double x3 = p.first;
    long double y3 = p.second;
    if (scalmul(x3 - x1, y3 - y1, x2 - x1, y2 - y1) > 0 &&
        scalmul(x3 - x2, y3 - y2, x1 - x2, y1 - y2) > 0) {
      complex<long double> a(x3 - x1, y3 - y1);
      complex<long double> b(x2 - x1, y2 - y1);
      long double cur = getans(a, b);
      if (cur < minR) {
        minR = cur;
      }
    } else {
      complex<long double> a1(x3 - x1, y3 - y1);
      complex<long double> a2(x3 - x2, y3 - y2);
      long double cur = min(abs(a1), abs(a2));
      if (cur < minR) {
        minR = cur;
      }
    }
  }
  long double pi = acos(-1.0);
  cout << pi * (maxR * maxR - minR * minR);
  return 0;
}
