1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #include <stdio.h>
void swap(double *a, double *b) { double temp; temp = *a; *a = *b; *b = temp; }
double min(double a, double b) { return a > b ? b : a; }
double max(double a, double b) { return a > b ? a : b; }
int main(int argc, const char * argv[]) {
double x1, y1, x2, y2, x3, y3, x4, y4; while (scanf("%lf %lf %lf %lf %lf %lf %lf %lf", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4) != EOF) { if (x1 > x2) swap(&x1, &x2); if (y1 > y2) swap(&y1, &y2); if (x3 > x4) swap(&x3, &x4); if (y3 > y4) swap(&y3, &y4); double myX1 = max(x1, x3); double myY1 = max(y1, y3); double myX2 = min(x2, x4); double myY2 = min(y2, y4); printf("%.2lf\n", myX1 > myX2 || myY1 > myY2 ? 0: (myY2-myY1) * (myX2-myX1)); } return 0; }
|