在window操作系统中,最主要的桌面元素是窗口。通常一个窗口有4个整数定义位置:左边坐标(left)、右边坐标(right)、上边坐标(top)、下边坐标(bottom)。
现在给你2个窗口位置信息,判断它们位置是否有重叠。输出重叠的面积;否则输出0。
输入格式
共2行:每行四个整数,表示一个窗口的位置信息。
输出格式
如果2个窗口位置重叠,输出重叠的面积;否则输出0。
输入/输出例子1 输入:
10 100 20 60 60 160 50 200
输出:
400
代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a1,b1,c1,d1,a2,b2,c2,d2;
signed main(){
cin>>a1>>b1>>c1>>d1>>a2>>b2>>c2>>d2;
if(a1<a2&&b1<a2||a1>a2&&a1>b2||c1<c2&&d1<c2||c1>c2&&c1>d2){
cout<<0;
return 0;
}
if(a2>=a1&&a2<=b1){
if(b2<=b1){
if(c2>=c1&&c2<=d1){
if(d2<=d1) cout<<(b2-a2)*(d2-c2);
else cout<<(b2-a2)*(d1-c2);
}
else cout<<(b2-a2)*(d2-c1);
}
else{
if(c2>=c1&&c2<=d1){
if(d2<=d1) cout<<(b1-a2)*(d2-c2);
else cout<<(b1-a2)*(d1-c2);
}
else cout<<(b1-a2)*(d2-c1);
}
}
else if(a2<a1&&b2>=a1&&b2<=b1){
if(c2>=c1&&c2<=d1)
{
if(d2<=d1) cout<<(b2-a1)*(d2-c2);
else cout<<(b2-a1)*(d1-c2);
}
else cout<<(b2-a1)*(d2-c1);
}
else
{
if(c2>=c1&&c2<=d1)
{
if(d2<=d1) cout<<(b1-a1)*(d2-c2);
else cout<<(b1-a1)*(d1-c2);
}
else cout<<(b1-a1)*(d1-c1);
}
return 0;
}
/*
10 100 20 60
60 160 50 200
*/