func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<complex<double> > vec;   double minDist(complex<double> &a, complex<double> &b, complex<double> &p) {     complex<double> ab = ((b) - (a)), ap = ((p) - (a)), ba = ((a) - (b)),                     bp = ((p) - (b));     double distPB = sqrt(((conj(bp) * (bp)).real())),            distPA = sqrt(((conj(ap) * (ap)).real())),            distAB = sqrt(((conj(ab) * (ab)).real()));     double thetaA = acos(((conj(ab) * (ap)).real()) / distAB / distPA);     double thetaB = acos(((conj(ba) * (bp)).real()) / distAB / distPB);     double ans;     if (fabs(thetaA) >= 3.14159265358979323846 / 2)       ans = distPA;     else if (fabs(thetaB) >= 3.14159265358979323846 / 2)       ans = distPB;     else       ans = sin(fabs(thetaA)) * distPA;     return ans;   }   int main() {     int n;     long long px, py, tempX, tempY;     scanf( %d %I64d %I64d , &n, &px, &py);     double maxi = 0, mini = 1E12, dist;     for (int i = 0; i < n; i++) {       scanf( %I64d %I64d , &tempX, &tempY);       dist = sqrt((tempX - px) * (tempX - px) + (tempY - py) * (tempY - py));       maxi = max(maxi, dist);       complex<double> xx = complex<double>(tempX, tempY);       vec.push_back(xx);     }     vec.push_back(vec[0]);     maxi *= maxi;     complex<double> P = complex<double>(px, py);     for (int i = 0; i < n; i++) {       mini = min(mini, minDist(vec[i], vec[i + 1], P));     }     mini *= mini;     double ans = (maxi - mini);     ans *= 3.14159265358979323846;     printf( %0.8f , ans);     return 0;   }   