站外题求助
  • 板块灌水区
  • 楼主MAX_CURRY_JAMES
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/6/5 17:29
  • 上次更新2024/6/5 20:30:18
查看原帖
站外题求助
796776
MAX_CURRY_JAMES楼主2024/6/5 17:29

在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
*/
2024/6/5 17:29
加载中...