#include using namespace std; long double segint(long double x, long double r, long double uy, long double dy) { long double up = sqrt(r * r - x * x); long double bot = -up; long double ups = min(up, uy); long double bots = max(bot, dy); if (bots < ups) { return ups - bots; } else return 0; } int main(void) { // LONG DOUBLE?! long double x, y, r, ax, ay, bx, by; cin >> x >> y >> r >> ax >> ay >> bx >> by; ax -= x; bx -= x; ay -= y; by -= y; long double lx = min(ax, bx); long double rx = max(ax, bx); long double uy = max(ay, by); long double dy = min(ay, by); long double steps = 4000000; long double sum = 0; lx = max(lx, -r); rx = min(rx, r); long double stepsize = (rx - lx)/steps; for (int i = 0; i < steps; i++) { long double x = lx + i * stepsize; long double a = segint(x, r, uy, dy); long double b = segint(x + stepsize, r, uy, dy); sum += (a+b)/2 * stepsize; } printf("%0.10Lf\n", sum); }