#include <bits/stdc++.h>   #pragma GCC target( sse4,avx )   const double pi = 3.14159265358979323;   struct dpoint {     double x, y;     dpoint() : x(0), y(0) {}     dpoint(double x, double y) : x(x), y(y) {}   };   void run(std::istream& in, std::ostream& out) {     int n;     dpoint p;     in >> n >> p.x >> p.y;     std::vector<dpoint> points(n);     for (int i = 0; i < n; i++) {       in >> points[i].x >> points[i].y;     }     double maxR = 0;     double minR = 1e10;     for (int i = 0; i < n; i++) {       double dist1 = hypot(points[i].x - p.x, points[i].y - p.y);       maxR = std::max(maxR, dist1);       minR = std::min(minR, dist1);       dpoint& p1 = points[i];       dpoint& p2 = points[(i + 1) % n];       if ((p2.x - p1.x) * (p.x - p1.x) + (p2.y - p1.y) * (p.y - p1.y) > 0.5 &&           (p1.x - p2.x) * (p.x - p2.x) + (p1.y - p2.y) * (p.y - p2.y) > 0.5) {         double a = p1.y - p2.y;         double b = p2.x - p1.x;         double dist = a * p.x + b * p.y - a * p1.x - b * p1.y;         dist /= hypot(a, b);         minR = std::min(minR, std::abs(dist));       }     }     out.precision(20);     out << std::fixed;     out << (maxR * maxR - minR * minR) * pi << std::endl;   }   int main() {     std::cin.sync_with_stdio(false);     std::cin.tie(nullptr);     run(std::cin, std::cout);     return 0;   }   