#include <bits/stdc++.h>
using namespace std;
using vi = vector<int>;
using vvi = vector<vi>;
using vvvi = vector<vvi>;
using ll = long long;
using vll = vector<ll>;
using vvll = vector<vll>;
using vvvll = vector<vvll>;
using ull = unsigned long long;
using vb = vector<bool>;
using vvb = vector<vb>;
using vd = vector<double>;
using vvd = vector<vd>;
using vvvd = vector<vvd>;
using vs = vector<string>;
using vvs = vector<vs>;
using vc = vector<char>;
using vvc = vector<vc>;
using ii = pair<int, int>;
using vii = vector<ii>;
using vvii = vector<vii>;
using dd = pair<double, double>;
using vdd = vector<dd>;
using vvdd = vector<vdd>;
using Mii = map<int, int>;
using vMii = vector<Mii>;
using Si = set<int>;
using vSi = vector<Si>;
using vvSi = vector<vSi>;
using ld = long double;
using vld = vector<ld>;
using vvld = vector<vld>;
struct pt {
  ll x, y;
};
struct Line {
  ld A, B, C;
};
Line line(pt a, pt b) {
  ld A = b.y - a.y;
  ld B = a.x - b.x;
  ld C = b.x * a.y - b.y * a.x;
  return {A, B, C};
}
using vpt = vector<pt>;
const ld eps = 1e-12;
ld dist(pt p, pt q) {
  ld ans = ld(p.x - q.x) * ld(p.x - q.x) + ld(p.y - q.y) * ld(p.y - q.y);
  return sqrt(ans);
}
ld dist_line(pt p, Line l) {
  ld ans = l.A * p.x + l.B * p.y + l.C;
  ans = abs(ans) / sqrt(l.A * l.A + l.B * l.B);
  return ans;
}
bool agut(pt p, pt q, pt r) {
  pt v1 = {q.x - p.x, q.y - p.y};
  pt v2 = {r.x - p.x, r.y - p.y};
  return v1.x * v2.x + v1.y * v2.y < -eps;
}
int main() {
  cin.tie(NULL);
  ios_base::sync_with_stdio(false);
  int n;
  while (cin >> n) {
    pt p;
    cin >> p.x >> p.y;
    ld rp = 1e18, rg = 0;
    vpt v(n);
    for (pt& q : v) cin >> q.x >> q.y;
    for (int i = 0; i < n; ++i) {
      rg = max(rg, dist(v[i], p));
      ld d = dist_line(p, line(v[i], v[(i + 1) % n]));
      pt prop =
          dist(v[i], p) < dist(v[(i + 1) % n + eps], p) ? v[i] : v[(i + 1) % n];
      pt lluny =
          dist(v[i], p) < dist(v[(i + 1) % n + eps], p) ? v[(i + 1) % n] : v[i];
      if (agut(prop, p, lluny)) {
        d = dist(prop, p);
      }
      rp = min(rp, d);
    }
    ld ans;
    ld dif = rg - rp;
    ans = acos(-1) * (2 * rp * dif + dif * dif);
    cout << fixed;
    cout.precision(18);
    cout << ans << '\n';
  }
}
