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