#include <bits/stdc++.h>
using namespace std;
double pi =
    3.141592653589793238462643383279502884197169399375105820974944592307816406286;
pair<long long, long long> ar[100010];
double dis(long long a, long long b, long long c, long long d) {
  double ans = (a - c) * (a - c) + (b - d) * (b - d);
  ans = sqrt(ans);
  return ans;
}
double dis2(long long a, long long b, long long c, long long d) {
  double ans = a * d - b * c;
  double tmp = a * a + b * b;
  tmp = sqrt(tmp);
  if (ans < 0) ans = -ans;
  ans /= tmp;
  return ans;
}
void solve() {
  int n;
  long long a, b, x, y, x1, y1;
  pair<long long, long long> p;
  scanf("%d", &n);
  ;
  scanf("%lld", &p.first);
  ;
  scanf("%lld", &p.second);
  ;
  double dist, mx = 0, mn = 1000000000.0;
  for (int i = 0; i < n; i++) {
    scanf("%lld", &a);
    ;
    scanf("%lld", &b);
    ;
    dist = dis(a, b, p.first, p.second);
    mx = max(dist, mx);
    mn = min(dist, mn);
    ar[i].first = a;
    ar[i].second = b;
  }
  ar[n].first = ar[0].first;
  ar[n].second = ar[0].second;
  for (int i = 1; i <= n; i++) {
    a = ar[i].first - ar[i - 1].first;
    b = ar[i].second - ar[i - 1].second;
    x = ar[i].first - p.first;
    y = ar[i].second - p.second;
    x1 = ar[i - 1].first - p.first;
    y1 = ar[i - 1].second - p.second;
    if ((x1 * a + b * y1 < 0 && x * a + b * y > 0) ||
        (x1 * a + b * y1 > 0 && x * a + b * y < 0))
      dist = dis2(a, b, x, y);
    mn = min(mn, dist);
  }
  double ans = pi * (mx + mn) * (mx - mn);
  printf("%.15lf\n", ans);
}
int main() {
  int t = 1;
  for (int i = 1; i <= t; i++) {
    solve();
  }
}
