题目:有一个城市需要修建,给你N个民居的坐标X、Y,问把这么多民居全部包进城市的话,城市所需最小面积是多少(城市为平行于坐标轴的正方形)
输入:
- 第一行为N,表示民居数目(1=<M=<1000)
- 下面为N行,每行两个数字Xi,Yi,表示该居民的坐标(-le9=<xi,yi=<1e9)
输出:
- 城市所需的最小面积
样例输入:
2
0 0
2 2
样例输出:
4
代码:
第一行#define _CRT_SECURE_NO_WARNINGS主要是为了解决:error C4996: 'scanf'错误
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string>
#include<algorithm>
using namespace std;
#define INF 03xffffff
struct node
{
long long x, y;
}d[2000];
int main()
{
//城市的数目
int n;
while (scanf("%d", &n) != EOF)
{
int i;
memset(d,0,sizeof(d));
//记录最大横坐标,最大纵坐标,最小横坐标,最小纵坐标
long long mx1 = 0, my2 = 0, kx1 = 0, ky2 = 0;
for (i = 0; i < n; i++)
{
scanf("%lld%lld", &d[i].x, &d[i].y);
if (d[mx1].x < d[i].x)
mx1 = i;
if (d[my2].y < d[i].y)
my2 = i;
if (d[kx1].x > d[i].x)
kx1 = i;
if (d[ky2].y > d[i].y)
ky2 = i;
}
long long c;
//哪个边距大,就以哪个为边长建立城市
if (d[mx1].x-d[kx1].x>d[my2].y-d[ky2].y)
c = (d[mx1].x - d[kx1].x)* (d[mx1].x - d[kx1].x);
else
c = (d[my2].y - d[ky2].y)*(d[my2].y - d[ky2].y);
printf("%lld\n",c);
}
return 0;
}
代码参考链接:
https://blog.csdn.net/zl_666/article/details/50529085