#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
  cerr << name << " : " << arg1 << '\n';
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
int inf = 0x3f3f3f3f;
long long infl = 0x3f3f3f3f3f3f3f3fLL;
long double infd = 1.0 / 0.0;
const long long MOD = 1e9 + 7;
const long double pi = 2 * acos(0.0);
long double eps = 1e-7;
bool same_side(pair<long double, long double> A,
               pair<long double, long double> B,
               pair<long double, long double> C, long double m) {
  if (fabs(m) < eps) {
    if ((A.second - C.second) * (B.second - C.second) < 0) return 1;
    return 0;
  }
  if (fabs(1 / m) < eps) {
    if ((A.first - C.first) * (B.first - C.first) < 0) return 1;
    return 0;
  }
  long double gx = A.second - m * A.first + m * C.first - C.second;
  long double gy = B.second - m * B.first + m * C.first - C.second;
  if (gx * gy < 0) return 1;
  return 0;
}
long double dist(pair<long double, long double> A,
                 pair<long double, long double> B) {
  long double res =
      (long double)sqrt((A.first - B.first) * (A.first - B.first) +
                        (A.second - B.second) * (A.second - B.second));
  return res;
}
long double ppd(pair<long double, long double> A,
                pair<long double, long double> B,
                pair<long double, long double> C) {
  long double le = dist(A, C);
  long double ri = dist(B, C);
  long double m = (B.second - A.second) / (B.first - A.first);
  long double len = (long double)sqrt((long double)1 + m * m);
  long double num = C.second - m * C.first + m * A.first - A.second;
  long double md = fabs(num / len);
  if (fabs(B.first - A.first) < eps) md = fabs(C.first - A.first);
  long double m2 = -1 / m;
  bool is_same = same_side(A, B, C, m2);
  if (is_same) return md;
  return infd;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  ;
  int n, p, q;
  cin >> n >> p >> q;
  long double as = pi;
  long double mx = -infd, mn = infd;
  vector<pair<int, int>> pts;
  while (n--) {
    int x, y;
    cin >> x >> y;
    pts.push_back({x, y});
    long double gg = dist({x, y}, {p, q});
    if (gg > mx) mx = gg;
    if (gg < mn) mn = gg;
  }
  n = (int)pts.size();
  for (int i = 0; i < n; i++) {
    pair<int, int> A = pts[i];
    pair<int, int> B = pts[(i + 1) % n];
    long double gg = ppd(A, B, {p, q});
    if (gg < mn) mn = gg;
  }
  as *= (long double)(mx * mx - mn * mn);
  cout << fixed << setprecision(18) << as;
  return 0;
}
