題目:有一個城市需要修建,給你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;
}
代碼參考鏈接: