小颜同学的劳动节挑战(二)

经过了一上午的忙碌后,小颜同学决定回老家好好休息一下,于是他高高兴兴的回到了老家,下午他一到家,就看到爷爷正在田里忙着种植,他便立刻准备过去帮忙。

小颜的爷爷拥有 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。

image.png

数据范围

对于 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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值