2个坑点

城市修建

http://www.nowcoder.com/questionTerminal/c1fa9060fae2433085e1c21f5d7e94c6

一、2个注意事项

  • 1、关于x和y的范围,是int的最小到最大,所以如果是int*int可能会溢出,所以要用long long
    PS:这个题目如果要进阶,可以修改x和y的范围是long long,那么就要用大数,目前本题不需要大数
  • 2、关于,最大的『正方形』这个如何获得,注意,排序条件不能是
    a.x和b.x不同,则返回a.x<b.x
    如果相同,则返回a.y<b.y
    因为,可能会出现这样数据
    图片说明
  • 所以规则是——x获得最大和最小,y获得最大和最小『这样才是真正的排序规则』

二、AC代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
int n;
struct node
{
    long long  x;
    long long y;
}solve[maxn];


bool cmpx( node a, node b )
{
    return a.x<b.x;
}

bool cmpy(node a, node b)
{
    return a.y<b.y;
}

int main()
{
    while( ~scanf("%d",&n) )
    {
        int loop=n;
        while( loop-- )
        {
            scanf("%lld%lld",&solve[loop].x , &solve[loop].y );
        }
        sort( solve, solve+n, cmpx );
        long long x=solve[n-1].x-solve[0].x;
        sort( solve, solve+n, cmpy );
        long long y=solve[n-1].y-solve[0].y;
        long long num=max( x, y );
        printf("%lld\n", num*num );
    }

    return 0;
}
全部评论

相关推荐

已老实求offer😫:有点像徐坤(没有冒犯的意思哈)
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务