#include <bits/stdc++.h>
using namespace std;
vector<pair<double, double>> v;
double dist(pair<double, double> a, pair<double, double> b) {
  double aux = a.first - b.first;
  aux *= aux;
  double aux2 = a.second - b.second;
  aux2 *= aux2;
  return sqrt(aux + aux2);
}
double Dot(pair<double, double> a, pair<double, double> b) {
  return a.first * b.first + a.second * b.second;
}
double cross(pair<double, double> a, pair<double, double> b) {
  return a.first * b.second - a.second * b.first;
}
double dist_line(pair<double, double> p, pair<double, double> a,
                 pair<double, double> b) {
  pair<double, double> u, v, w, z;
  u = {b.first - a.first, b.second - a.second};
  v = {p.first - a.first, p.second - a.second};
  w = {p.first - b.first, p.second - b.second};
  z = {a.first - b.first, a.second - b.second};
  if (Dot(u, w) > 0) return dist(p, b);
  if (Dot(z, v) > 0) return dist(p, a);
  return fabs(cross(u, v)) / dist(a, b);
}
int main() {
  ios_base::sync_with_stdio(0);
  int n, i;
  double maxD = 0, minD = 1e9;
  pair<double, double> aux, p;
  cin >> n >> p.first >> p.second;
  for (i = 0; i < n; i++) {
    cin >> aux.first >> aux.second;
    v.emplace_back(aux);
  }
  for (int i = 0; i < n; i++) {
    double d = dist(p, v[i]);
    maxD = max(maxD, d);
    minD = min(minD, d);
  }
  for (i = 0; i < n; i++) {
    double d = dist_line(p, v[i], v[(i + 1) % n]);
    maxD = max(maxD, d);
    minD = min(minD, d);
  }
  cout.precision(10);
  cout << fixed << (maxD * maxD - minD * minD) * 3.14159265358979323846 << "\n";
  return 0;
}
