题目
问题描述
平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
输入格式
输入仅包含两行,每行描述一个矩形。
在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。
输出格式
输出仅包含一个实数,为交的面积,保留到小数后两位。
时间限制:1.0s 内存限制:512.0MB
代码
这个题目已说明:两个矩形,它们的边平行于直角坐标系的X轴或Y轴
所以,这个题目就是关于线段相交的处理
一开始,在纸上画图时,想的是相离,相交,相隔,然后发现挺麻烦的,感觉应该有满足这三种条件的规律
于是呢,就上网找代码,然后发现了更优美的代码,果断把自己写的代码抛弃。。。
#include
#include
using namespace std;
#define max(x,y) (x>y?x:y)
#define min(x,y) (x
int main(){
double a,b,c,d,A,B,C,D;
cin>>a>>b>>c>>d>>A>>B>>C>>D;
double m,n,M,N;
m = max(min(a,c),min(A,C));
n = max(min(b,d),min(B,D));
M = min(max(a,c),max(A,C));
N = min(max(b,d),max(B,D));
if(M > m && N > n)printf("%.2f",(M-m)*(N-n));
else printf("0.00");
return 0;
}
result: