#include <bits/stdc++.h>
using namespace std;
long long gcd(long long x, long long y) { return (y ? gcd(y, x % y) : x); }
long long lcm(long long x, long long y) { return x * (y / gcd(x, y)); }
const long double Pi = 3.14159265358979323846;
long double distance(long double x, long double y, long double x1,
                     long double y1, long double x2, long double y2) {
  long double A = x - x1;
  long double B = y - y1;
  long double C = x2 - x1;
  long double D = y2 - y1;
  long double dot = A * C + B * D;
  long double len_sq = C * C + D * D;
  long double param = -1;
  long double xx, yy;
  if (len_sq != 0.0) param = dot / len_sq;
  if (param < 0.0) {
    xx = x1;
    yy = y1;
  } else if (param > 1.0) {
    xx = x2;
    yy = y2;
  } else {
    xx = x1 + param * C;
    yy = y1 + param * D;
  }
  long double dx = x - xx;
  long double dy = y - yy;
  return dx * dx + dy * dy;
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int n, x, y;
  cin >> n >> x >> y;
  long double r1 = 1e15, r2 = -100000000000;
  vector<pair<long double, long double>> a(n + 1);
  for (int i = 0; i < n; i++) {
    long long x1, y1;
    cin >> x1 >> y1;
    a[i].first = x1 - x;
    a[i].second = y1 - y;
    if (i == 0) {
      a[n].first = x1 - x;
      a[n].second = y1 - y;
    }
    r2 = max(r2, (a[i].first * a[i].first) + (a[i].second * a[i].second));
  }
  for (int i = 1; i < n + 1; i++) {
    r1 = min(r1, distance(0, 0, a[i - 1].first, a[i - 1].second, a[i].first,
                          a[i].second));
  }
  long double ans = Pi * ((r2 - r1) * 1.0);
  cout << setprecision(15) << ans << '\n';
  return 0;
}
