#include <bits/stdc++.h>
using namespace std;
const int N = 2e6;
const int INF = 1e9 + 9;
int n;
pair<double, double> p;
pair<double, double> a[N];
double mx = -1e18, mn = 1e18;
double dist(pair<double, double> a, pair<double, double> b) {
  return sqrt((a.first - b.first) * (a.first - b.first) +
              (a.second - b.second) * (a.second - b.second));
}
long long dp(pair<double, double> a, pair<double, double> b) {
  return a.first * b.first + a.second * b.second;
}
long long cp(pair<double, double> a, pair<double, double> b) {
  return a.first * b.second - a.second * b.first;
}
pair<double, double> vec(pair<double, double> a, pair<double, double> b) {
  return pair<double, double>(b.first - a.first, b.second - a.second);
}
const double PI = 3.1415926535897932384626433832795;
double D(pair<double, double> v, pair<double, double> w) {
  double l2 = dist(v, w);
  l2 *= l2;
  pair<double, double> v1 = vec(v, w), v2 = vec(v, p);
  if (l2 == 0.0) return dist(p, v);
  double t = dp(v2, v1) / l2;
  if (t < 0.0)
    return dist(p, v);
  else if (t > 1.0)
    return dist(p, w);
  pair<double, double> mid(v.first + t * v1.first, v.second + t * v1.second);
  return dist(p, mid);
}
int main() {
  ios_base ::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  cin >> p.first >> p.second;
  for (int i = int(1); i <= int(n); ++i) {
    cin >> a[i].first >> a[i].second;
  }
  for (int i = int(1); i <= int(n); ++i) {
    int nxt = (i == n ? 1 : i + 1);
    double d = D(a[i], a[nxt]);
    mx = max(mx, dist(p, a[i]));
    mn = min(mn, d);
  }
  cout << fixed << setprecision(20);
  cout << PI * (mx * mx - mn * mn) << "\n";
  return 0;
}
