#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
const long double pi = acos(-1.0);
long double n, x, y;
struct point {
  long double x, y;
  point(long double vx, long double vy) { x = vx, y = vy; }
  point() {}
} p[N];
point operator-(const point& v1, const point& v2) {
  return point(v2.x - v1.x, v2.y - v1.y);
}
long double product(point a, point b) { return a.x * b.y - a.y * b.x; }
long double dot(point a, point b) { return a.x * b.x + a.y * b.y; }
long double dis(point a, point b) {
  return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (int i = 0; i <= n; i++) cin >> p[i].x >> p[i].y;
  long double mn = 1e18, mx = 0;
  for (int i = 1; i <= n; i++) {
    int j = (i == n ? 1 : i + 1);
    mx = max(mx, dis(p[0], p[i]));
    point ap = p[0] - p[i], ab = p[j] - p[i];
    point ba = p[i] - p[j], bp = p[0] - p[j];
    if (dot(ap, ab) < 0) {
      mn = min(mn, dis(p[0], p[i]));
      continue;
    }
    if (dot(ba, bp) < 0) {
      mn = min(mn, dis(p[0], p[j]));
      continue;
    }
    long double s = fabs(product(ap, ab)) / dis(p[i], p[j]);
    mn = min(mn, s);
  }
  long double res = pi * (mx * mx - mn * mn);
  cout << fixed << setprecision(15) << res << '\n';
  return 0;
}
