问题描述
平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
输入格式
输入仅包含两行,每行描述一个矩形。在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。
输出格式
输出仅包含一个实数,为交的面积,保留到小数后两位。
样例输入
1 1 3 3
2 2 4 4
样例输出
1.00
代码:
#include<iostream>
using namespace std;
#include<stdio.h>
double max(double a,double b)
{
if(a>b)return a;
else return b;
}
double min(double a,double b)
{
if(a<b)return a;
else return b;
}
void swap(double& a,double& b)
{
double t=a;
a=b;
b=t;
}
int main()
{
double x1=0,y1=0;
double x2=0,y2=0;
double x3=0,y3=0;
double x4=0,y4=0;
cin>>x1>>y1>>x2>>y2;
cin>>x3>>y3>>x4>>y4;
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 a=0,b=0,c=0,d=0;
a=max(x1,x3);
b=max(y1,y3);
c=min(x2,x4);
d=min(y2,y4);
double m=c-a;
double n=d-b;
double S=m*n;
if(m<=0||n<=0)printf("0.00");
else printf("%.2f",S);
return 0;
}