#include #include using namespace std; #define PI 3.1415926535 double cutarea(double r, double d) { if (abs(d) >= r) return 0; return acos(d/r)*r*r - sqrt(r*r-d*d)*d; } double cornerarea(double r, double x, double y) { if (x * x + y * y >= r * r) return 0; return (4 * x * y + 2 * cutarea(r, x) + 2 * cutarea(r, y) - PI * r * r)/4; } int main() { double mx, my, r, ax, ay, bx, by; cin >> mx >> my >> r >> ax >> ay >> bx >> by; ax -= mx; bx -= mx; ay -= my; by -= my; double xu, xd, yu, yd; if (ax > bx) { xu = ax; xd = bx; } else { xu = bx; xd = ax; } if (ay > by) { yu = ay; yd = by; } else { yu = by; yd = ay; } // cout << xu << " " << xd << " " << yu << " " << yd << "\n"; double circarea = PI * r * r; double xusarea = cutarea(r, xu); double xdsarea = cutarea(r, -xd); double yusarea = cutarea(r, yu); double ydsarea = cutarea(r, -yd); // cout << xusarea << " " << xdsarea << " " << yusarea << " " << ydsarea << "\n"; double c1area = cornerarea(r, xu, yu); double c2area = cornerarea(r, xu, -yd); double c3area = cornerarea(r, -xd, yu); double c4area = cornerarea(r, -xd, -yd); // cout << c1area << " "<< c2area << " "<< c3area << " "<< c4area << "\n"; double res = circarea - xusarea - xdsarea - yusarea - ydsarea + c1area + c2area + c3area + c4area; printf("%.4f\n", res); return 0; }