#include <bits/stdc++.h>
using namespace std;
const long long oo = 10000000000000000ll;
const int N = 1000009;
int n;
pair<long long, long long> P, a[N];
long long vmax, vmin;
bool check(pair<long long, long long> i, pair<long long, long long> j,
           pair<long long, long long> P) {
  long long a, b, c;
  a = j.first - i.first;
  b = j.second - i.second;
  c = -a * P.first - b * P.second;
  long long k1 = (a * i.first + b * i.second + c);
  long long k2 = (a * j.first + b * j.second + c);
  if ((k1 > 0 && k2 < 0) || (k1 < 0 && k2 > 0))
    return 1;
  else
    return 0;
}
long long dis_sq(pair<long long, long long> i, pair<long long, long long> j) {
  return ((i.first - j.first) * (i.first - j.first) +
          (i.second - j.second) * (i.second - j.second));
}
double dis_line(pair<long long, long long> i, pair<long long, long long> j,
                pair<long long, long long> P) {
  double a, b, c;
  a = j.second - i.second;
  b = i.first - j.first;
  c = -a * i.first - b * i.second;
  return ((double)((a * (double)P.first + b * (double)P.second + c) /
                   (a * a + b * b))) *
         (a * (double)P.first + b * (double)P.second + c);
}
double PI = 3.1415926535897932384626433832795;
int main() {
  vmax = 0;
  vmin = oo;
  cin >> n >> P.first >> P.second;
  for (int i = 1; i <= n; i++) {
    cin >> a[i].first >> a[i].second;
    long long kk = dis_sq(P, a[i]);
    vmax = max(vmax, kk);
    vmin = min(vmin, kk);
  }
  a[n + 1] = a[1];
  double vm = vmax, vn = vmin;
  for (int i = 1; i <= n; i++)
    if (check(a[i], a[i + 1], P)) {
      double kk = dis_line(a[i], a[i + 1], P);
      vm = max(vm, kk);
      vn = min(vn, kk);
    }
  double ans = vm - vn;
  printf("%0.15f", ans * PI);
}
