#include <bits/stdc++.h>
using namespace std;
vector<pair<long double, long double> > v;
pair<long double, long double> p;
int n;
bool valid(long double len) {
  bool posi = false;
  for (int i = 1; i <= n; i++) {
    long double x1, x2, y1, y2;
    y1 = v[i - 1].second - p.second;
    y2 = v[i].second - p.second;
    x1 = v[i - 1].first - p.first;
    x2 = v[i].first - p.first;
    long double p12, p22, p1p2;
    long double a, b, c;
    p12 = x1 * x1 + y1 * y1;
    p22 = x2 * x2 + y2 * y2;
    p1p2 = x1 * x2 + y1 * y2;
    a = p12 + p22 - p1p2 * 2.0;
    b = p1p2 * 2.0 - p12 * 2.0;
    c = p12 - len * len;
    if ((b * b - a * c * 4.0) < 0) continue;
    long double det = b * b - a * c * 4.0;
    det = sqrt(det);
    long double alpha = (-b + det) / (a * 2.0);
    long double beta = (-b - det) / (a * 2.0);
    if (0 <= alpha && alpha <= 1) posi = true;
    if (0 <= beta && beta <= 1) posi = true;
  }
  return posi;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n >> p.first >> p.second;
  v.resize(n + 2);
  long double mn, mx = -1;
  int x, y;
  for (int i = 0; i < n; i++) {
    cin >> x >> y;
    v[i].first = x;
    v[i].second = y;
    long double x1, x2, y1, y2;
    y2 = v[i].second - p.second;
    x2 = v[i].first - p.first;
    mx = max(mx, sqrt(x2 * x2 + y2 * y2));
  }
  v[n] = v[0];
  long double lo = 0.0, hi = mx;
  long double mid;
  long double ans = -1;
  for (int i = 1; i <= 300; i++) {
    mid = (lo + hi) / 2;
    if (valid(mid) == true) {
      ans = mid;
      hi = mid;
    } else
      lo = mid;
  }
  mn = ans;
  long double pi = acos(-1);
  ans = pi * (mx * mx - mn * mn);
  cout << setprecision(32) << ans << endl;
  return 0;
}
