#include <bits/stdc++.h>
using namespace std;
double PI = 3.14159265358979323846;
long long x[100010], y[100010], minn = 1000000000000000ll, maxx = -1, px, py;
bool check(long long x1, long long y1, long long x2, long long y2, long long x3,
           long long y3) {
  double r = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
  r = ((x3 - x1) * (x2 - x1) + (y3 - y1) * (y2 - y1)) / r;
  if (r < 0) return false;
  if (r > 1) return false;
  return true;
}
int main() {
  int n, i;
  scanf("%d", &n);
  scanf("%lld", &px);
  scanf("%lld", &py);
  for (i = 0; i < n; ++i) {
    scanf("%lld", &x[i]);
    scanf("%lld", &y[i]);
    maxx = max(maxx, (x[i] - px) * (x[i] - px) + (y[i] - py) * (y[i] - py));
    minn = min(minn, (x[i] - px) * (x[i] - px) + (y[i] - py) * (y[i] - py));
  }
  double max1 = sqrt((double)maxx);
  double min1 = sqrt((double)minn);
  for (i = 0; i < n - 1; ++i) {
    long long A = y[i + 1] - y[i];
    long long B = x[i] - x[i + 1];
    long long C = x[i + 1] * y[i] - x[i] * y[i + 1];
    long long val = abs(A * px + B * py + C);
    double d = ((double)abs(val)) / sqrt((double)(A * A + B * B));
    if (check(x[i], y[i], x[i + 1], y[i + 1], px, py)) min1 = min(min1, d);
  }
  long long A = y[0] - y[n - 1];
  long long B = x[n - 1] - x[0];
  long long C = x[0] * y[n - 1] - x[n - 1] * y[0];
  long long val = abs(A * px + B * py + C);
  double d = ((double)abs(val)) / sqrt((double)(A * A + B * B));
  if (check(x[n - 1], y[n - 1], x[0], y[0], px, py)) min1 = min(min1, d);
  double ans = PI * (max1 * max1 - min1 * min1);
  printf("%.9lf\n", ans);
}
