#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
const int inf = 0x3f3f3f3f;
const double eps = 1e-6;
const double pi = acos(-1.0);
const int mod = 1e9 + 7;
struct Point {
  double x, y;
} p[N];
double dist_P_P(Point a, Point b) {
  return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y);
}
double dist_P_L(Point a, Point b, Point c) {
  double l1 = dist_P_P(a, b);
  double l2 = dist_P_P(b, c);
  double l3 = dist_P_P(c, a);
  if (l2 * l2 >= l1 * l1 + l3 * l3) return l3;
  if (l3 * l3 >= l1 * l1 + l2 * l2) return l2;
  double A = a.y - b.y;
  double B = b.x - a.x;
  double C = a.x * b.y - a.y * b.x;
  double D = A * c.x + B * c.y + C;
  return fabs(D * D / (A * A + B * B));
}
int main() {
  int n, i;
  double nea = 1e18, far = 0;
  scanf("%d", &n);
  for (i = 0; i <= n; ++i) scanf("%lf%lf", &p[i].x, &p[i].y);
  for (i = 1; i <= n; ++i) {
    if (i < n)
      nea = min(nea, dist_P_L(p[i], p[i + 1], p[0]));
    else
      nea = min(nea, dist_P_L(p[n], p[1], p[0]));
    far = max(far, dist_P_P(p[0], p[i]));
  }
  printf("%.18lf\n", pi * (far - nea));
  return 0;
}
