EOJ-1-12-矩形面积交

Description

平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。

Input

输入仅包含两行,每行描述一个矩形。

在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。

Output

输出仅包含一个实数,为交的面积,保留到小数后两位。

Sample Input 1

1
2
1 1 3 3
2 2 4 4

Sample Output 1

1
1.00

Code

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
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;

int main(){

double x1, y1, x2, y2;
double x3, y3, x4, y4;
scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2);
scanf("%lf%lf%lf%lf", &x3, &y3, &x4, &y4);

double minx1, maxx1, miny1, maxy1, minx2, maxx2, miny2, maxy2;

//获得矩形的最小,最大的顶点值
minx1 = min(x1,x2);
maxx1 = max(x1,x2);
miny1 = min(y1,y2);
maxy1 = max(y1,y2);

minx2 = min(x3, x4);
maxx2 = max(x3, x4);
miny2 = min(y3, y4);
maxy2 = max(y3, y4);

//判断两个矩形是否相切或相离
if (minx1>=maxx2||minx2>=maxx1||miny1>=maxy2||miny2>=maxy1) {
printf("0.00");
}else{
double a, b;
//找到矩形的的内测的各个小点,组成矩形
a = min(maxx1, maxx2) - max(minx1, minx2);
b = min(maxy1, maxy2) - max(miny1,miny2);
printf("%.2lf", a * b);
}

return 0;
}

----\(˙<>˙)/----赞赏一下吧~