#include <bits/stdc++.h>
using namespace std;
void itval(istream_iterator<string> it) {}
template <typename T, typename... Args>
void itval(istream_iterator<string> it, T a, Args... args) {
  cerr << *it << " = " << a << endl;
  itval(++it, args...);
}
const long long int MOD = 998244353;
template <typename T>
inline void print(T x) {
  cout << x << "\n";
}
template <typename T>
inline void printvec(T x) {
  for (auto a : x) cout << a << ' ';
  cout << '\n';
}
struct custom {
  bool operator()(
      const pair<long long int, pair<long long int, long long int>> &p1,
      const pair<long long int, pair<long long int, long long int>> &p2) const {
    return p1.first < p2.first;
  }
};
long long int get_pow(long long int a, long long int b, long long int M = MOD) {
  long long int res = 1;
  while (b) {
    if (b & 1) res = (res * a) % M;
    a = (a * a) % M;
    b >>= 1;
  }
  return res;
}
const long long int N = 200000 + 2, inf = 2e18;
const long double eps = 0.0000001;
std::vector<pair<long double, long double>> v;
long double X, Y;
inline long double dist(long double x, long double y, long double a,
                        long double b) {
  return sqrt((a - x) * (a - x) + (b - y) * (b - y));
}
long double calc(int i, long double r) {
  long double x = v[i].first + r * (v[i + 1].first - v[i].first),
              y = v[i].second + r * (v[i + 1].second - v[i].second);
  return dist(x, y, X, Y);
}
void solve() {
  long long int n;
  long double x, y, mx = 0, mn = inf;
  cin >> n >> X >> Y;
  v.resize(n + 1);
  for (long long int i = (long long int)0; i < (long long int)(n); i++) {
    cin >> v[i].first >> v[i].second;
    mx = max(mx, dist(v[i].first, v[i].second, X, Y));
  }
  v[n] = v[0];
  for (long long int i = (long long int)0; i < (long long int)(n); i++) {
    long double lo = 0, hi = 1, m1, m2;
    int cnt = 0;
    while (lo < hi && cnt < 50) {
      m1 = lo + (hi - lo) / 3;
      m2 = hi - (hi - lo) / 3;
      if (calc(i, m1) <= calc(i, m2)) {
        hi = m2 - eps;
      } else {
        lo = m1 + eps;
      }
      cnt++;
    }
    mn = min(mn, calc(i, (lo + hi) / 2.0));
  }
  cout << fixed << setprecision(20)
       << (long double)3.141592653589793238 * (mx * mx - mn * mn);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int test = 1;
  clock_t z = clock();
  for (long long int tes = (long long int)0; tes < (long long int)(test);
       tes++) {
    solve();
  }
  fprintf(stderr, "Total Time:%.4f\n", (double)(clock() - z) / CLOCKS_PER_SEC),
      fflush(stderr);
  return 0;
}
