#include <bits/stdc++.h>
using namespace std;
const int MAX = 111111, MAX2 = 575;
double mdist, Mdist;
long long n, x[MAX], y[MAX];
long long sdfhrthrth, kihrbdb;
double dist(long long fdhttrlhn, long long ugvrrtgtrg, long long x2,
            long long y2) {
  return sqrt((fdhttrlhn - x2) * (fdhttrlhn - x2) +
              (ugvrrtgtrg - y2) * (ugvrrtgtrg - y2));
}
double dist2(long long fdhttrlhn, long long ugvrrtgtrg, long long x2,
             long long y2) {
  return (fdhttrlhn - x2) * (fdhttrlhn - x2) +
         (ugvrrtgtrg - y2) * (ugvrrtgtrg - y2);
}
int main() {
  cin >> n >> sdfhrthrth >> kihrbdb;
  for (int(i) = (0); i < (n); ++(i)) {
    cin >> x[i] >> y[i];
    double d = dist(x[i], y[i], sdfhrthrth, kihrbdb);
    if (!i) {
      Mdist = mdist = d;
    }
    Mdist = max(Mdist, d);
    mdist = min(mdist, d);
  }
  x[n] = x[0];
  y[n] = y[0];
  for (int(i) = (0); i < (n); ++(i)) {
    if (dist2(sdfhrthrth, kihrbdb, x[i], y[i]) <
            dist2(sdfhrthrth, kihrbdb, x[i + 1], y[i + 1]) +
                dist2(x[i], y[i], x[i + 1], y[i + 1]) &&
        dist2(sdfhrthrth, kihrbdb, x[i + 1], y[i + 1]) <
            dist2(sdfhrthrth, kihrbdb, x[i], y[i]) +
                dist2(x[i], y[i], x[i + 1], y[i + 1])) {
      long long a = y[i + 1] - y[i], b = x[i] - x[i + 1],
                c = -a * x[i] - b * y[i];
      mdist = min(mdist,
                  abs(a * sdfhrthrth + b * kihrbdb + c) / sqrt(a * a + b * b));
    }
  }
  printf("%.11lf", acos(-1.0) * (Mdist * Mdist - mdist * mdist));
  return 0;
}
