#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int MAX = 10000005;
int n;
pair<long double, long double> st;
pair<long double, long double> p;
long double Max = -1;
long double Min = 100000000000000000;
long double Min1 = 100000000000000000;
vector<pair<long double, long double>> v;
long double calc() {
  long double ret =
      pow(abs(p.first - st.first), 2) + pow(abs(p.second - st.second), 2);
  return ret;
}
void cal() {
  n = v.size();
  for (int i = 0; i < v.size(); i++) {
    long double a = sqrt(pow((v[i % n].first - v[(i + 1) % n].first), 2) +
                         pow((v[i % n].second - v[(i + 1) % n].second), 2));
    long double b = sqrt(pow((v[i % n].first - st.first), 2) +
                         pow((v[i % n].second - st.second), 2));
    long double c = sqrt(pow((st.first - v[(i + 1) % n].first), 2) +
                         pow((st.second - v[(i + 1) % n].second), 2));
    long double C = (pow(a, 2) + pow(b, 2) - pow(c, 2)) / (2 * a * b);
    long double B = (pow(c, 2) + pow(a, 2) - pow(b, 2)) / (2 * a * c);
    if (C >= 0 && B >= 0) {
      long double cur = b * sqrt((long double)(1 - pow(C, 2)));
      Min1 = min(Min1, cur * cur);
    }
  }
  return;
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n >> st.first >> st.second;
  while (n--) {
    cin >> p.first >> p.second;
    v.push_back(make_pair(p.first, p.second));
    Max = max(Max, calc());
    Min = min(Min, calc());
  }
  cal();
  long double first = 3.141592653589793116;
  Min1 = min(Min1, Min);
  long double ans = first * (Max - Min1);
  cout << fixed << setprecision(18) << ans;
  return 0;
}
