#include <bits/stdc++.h>
using namespace std;
const long long int mod = 1000000007;
const long long int inf = 0x3f3f3f3f3f3f3f3fLL;
const double eps = 1e-9;
const double PI = acos(-1);
long long int i, j, k;
void solve(void);
inline bool equal(double a, double b) { return fabs(a - b) < eps; }
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout << fixed << setprecision(10);
  int t = 1;
  while (t--) solve();
  return 0;
}
void solve() {
  long long int n;
  double x, y;
  cin >> n >> x >> y;
  double min = inf, max = 0.0;
  vector<pair<double, double> > v;
  for (i = (1); i <= (n); ++i) {
    double X, Y;
    cin >> X >> Y;
    double dist = (X - x) * (X - x) + (Y - y) * (Y - y);
    if (dist > max) max = dist;
    if (dist < min) min = dist;
    v.emplace_back(make_pair(X, Y));
  }
  v.emplace_back(v[0]);
  for (i = (0); i <= ((long long)v.size() - 2); ++i) {
    double x1 = v[i].first, x2 = v[i + 1].first, y1 = v[i].second,
           y2 = v[i + 1].second, dist, a, b;
    if (x2 == x1)
      a = x1, b = y;
    else {
      a = (y2 - y1) * (x2 - x1) * (y - y1) + (y2 - y1) * (y2 - y1) * x1 +
          x * (x2 - x1) * (x2 - x1);
      a /= ((y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1));
      b = (y2 - y1) * (a - x1) + y1 * (x2 - x1);
      b /= (x2 - x1);
    }
    double dist1 = (a - x1) * (a - x1) + (b - y1) * (b - y1);
    double dist2 = (a - x2) * (a - x2) + (b - y2) * (b - y2);
    double dist3 = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
    if (dist1 < dist3 && dist2 < dist3) {
      dist = (a - x) * (a - x) + (b - y) * (b - y);
      if (dist < min) min = dist;
    }
    {};
  }
  {};
  max -= min;
  cout << double(max) * PI << '\n';
}
