#include <bits/stdc++.h>
using namespace std;
int n;
pair<long long, long long> P, d[100000];
double rm, rM;
int main() {
  scanf("%d%I64d%I64d", &n, &P.first, &P.second);
  for (int i = 0; i < n; i++) {
    pair<long long, long long> Q;
    scanf("%I64d%I64d", &Q.first, &Q.second);
    double t = (P.first - Q.first) * (P.first - Q.first) +
               (P.second - Q.second) * (P.second - Q.second);
    if (i == 0)
      rm = rM = t;
    else {
      if (rm > t) rm = t;
      if (rM < t) rM = t;
    }
    d[i] = Q;
  }
  for (int i = 0; i < n; i++) {
    int j = (i + 1) % n;
    pair<long long, long long> Q =
        make_pair(d[j].first - d[i].first, d[j].second - d[i].second);
    double t =
        Q.first * (P.first - d[i].first) + Q.second * (P.second - d[i].second);
    t /= (Q.first * Q.first + Q.second * Q.second);
    if (0 <= t && t <= 1) {
      long long a = d[j].second - d[i].second;
      long long b = -(d[j].first - d[i].first);
      long long c = -(a * d[i].first + b * d[i].second);
      double t = (a * P.first + b * P.second + c);
      t = t * t / (a * a + b * b);
      if (t < rm) rm = t;
    }
  }
  double r = rM - rm;
  printf("%.9f\n", r * 3.1415926535897932384626433832795);
  return 0;
}
