经过了一上午的忙碌后,小颜同学决定回老家好好休息一下,于是他高高兴兴的回到了老家,下午他一到家,就看到爷爷正在田里忙着种植,他便立刻准备过去帮忙。
小颜的爷爷拥有 n 片田地,每一片都是边缘平行于坐标轴的矩形区域,这些田地之间有些部分是重叠的。
为了高效地维护这些田地,爷爷想购买一台机器,这需要所有田地都能被一个同样边缘平行于坐标轴的最小矩形完全覆盖。这样,机器就可以一次性处理所有田地,节省不少力气和时间。
但由于田地太多,爷爷需要小颜帮忙计算出这个最小覆盖矩形的面积。
输入描述
第一行一个正整数 n。
接下来 n 行,输入四个整数 x1,y1,x2,y2,表示存在一个以 (x1,y1),(x2,y2) 为两个对角顶点的田地。
输出描述
输出一个整数表示圈地的最小面积。
用例输入 1
2 1 0 2 3 -1 1 3 2
用例输出 1
12
提示
样例说明
样例解释:如下图所示,绿色为第一块田地,红色为第二块田地,不难发现最小的圈地面积为 3×4=12。
数据范围
对于 40% 的数据,n,∣x∣,∣y∣≤200。
对于 100% 的数据,1≤n≤2×105,0≤∣x∣,∣y∣≤109,x1=x2,y1=y2。
上代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long t, a, b, c, d, mxx=-1e9, mnx=1e9, mxy=-1e9, mny=1e9;
scanf("%lld", &t);
while (t--)
{
scanf("%lld %lld %lld %lld", &a, &b, &c, &d);
mxx=max({mxx,a,c}), mnx=min({mnx,a,c});
mxy=max({mxy,b,d}), mny=min({mny,b,d});
}
printf("%lld\n", (mxx-mnx)*(mxy-mny));
return 0;
}