A: 小李数星星

A: 小李数星星

时间限制: 1 Sec 内存限制: 128 MB

题目描述

小李在农村长大,那时候大家喜欢晚饭过后在院子里纳凉,听不懂大人在说什么的小李喜欢抬头看天空,尤其是夏天的夜晚,天上的星星又多又亮。
长大后小李进城打工,每当想家的时他还是喜欢抬头看看天,寻找另一边故乡的记忆。
可是大城市里空气质量太差了,雾霾天气横行,天上能看到的星星也越来越少了。
小李每次用一个正方形去覆盖自己所能看到的星星,随着日子的推移,这个正方形越来越小了,悲伤的小李希望你能告诉他这个正方形的面积。为了让问题变得简单,小李每次只会使用水平放置的正方形来覆盖(不会旋转),具体参照样例解释。

输入

第一行一个整数n,表示星星的数量。
接下来共n行,每行2个正整数(a,b),表示该星星到X轴距离为b,到Y轴距离为a,这些星星只会位于X轴的上方,Y轴的右方。
输入数据保证存在一个合法的正方形 (面积非零)去覆盖这些星星

输出

一个整数,表示能覆盖所有星星的最小正方形的面积。

样例输入

3
1 1
2 1
2 2

样例输出

1

提示
100%的数据,3<=n<=1000, 1<=x<=100000, 1<=y<=100000

解题思路

找出所有点中横坐标最大差值和纵坐标最大差值,并以两者最大值为边长构造正方形即可

第一次用pow提交结果WA了,应该是精度问题,以后注意

AC代码

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<vector>
#include<stack>
#include<sstream>
#include<queue>
#include<map>
#include<bitset>
#include<deque>
#define ll long long
using namespace std;
int main()
{
    int n;
    cin>>n;
    ll x1=100001,x2=0,y1=100001,y2=0,a,b;
    while(n--)
    {
        cin>>a>>b;
        if(a<x1)
            x1=a;
        if(a>x2)
            x2=a;
        if(b<y1)
            y1=b;
        if(b>y2)
            y2=b;
    }
    ll length=max((x2-x1),(y2-y1));
    ll area=length*length;
    cout<<area<<endl;
    return 0;
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值