题目描述
B
e
s
s
i
e
,
F
a
r
m
e
r
J
o
h
n
Bessie , Farmer John
Bessie,FarmerJohn 的优选牛,刚刚获得了一个牛科动物选美比赛的冠军!并得到了“世界奶牛小姐”的头衔。因此,Bessie将进行一场环球农场旅行,共
N
N
N个农场
(
2
<
=
N
<
=
50
,
000
)
(2<=N<=50,000)
(2<=N<=50,000),依次传播农场主和奶牛们之间的亲善友好。为了简单起见,世界可以看作一个二维平面,每座农场的位置用二维坐标
(
x
,
y
)
(x,y)
(x,y)表示,
x
,
y
x,y
x,y是
−
10
,
0000
-10,0000
−10,0000到
10
,
0000
10,0000
10,0000的整数。没有两座农场处于同一个位置上。
哪怕 B e s s i e Bessie Bessie在两个农场间都是走的直线,在某些农场间的距离还是很远,所以她想随身携带一只装满了干草的箱子,这样她在每一段行程都有充足的食物。因为 B e s s i e Bessie Bessie在她每到达一个农场后都要重新装满她的箱子,她想弄清楚她可能要走的最大距离,以此来决定它必须携带多大的箱子。帮帮Bessie吧!你只要求出任意两点距离的最大值就可以了。
输入
第一行,一个整数,N。第
2
~
N
+
1
2~N+1
2~N+1行,两个整数
X
,
Y
X,Y
X,Y,描述了农场的坐标。
输出
一个整数,最大距离的平方。
输入样例
4
0 0
0 1
1 1
1 0
输出样例
2
样例说明
农场
1
(
0
,
0
)
1(0,0)
1(0,0)和农场
3
(
1
,
1
)
3(1,1)
3(1,1)的距离为
2
2
2的开方。
说明
数据范围限制
2
<
=
N
<
=
50
,
000
2<=N<=50,000
2<=N<=50,000
解题思路
苦思冥想之际,抬头一看,发现这题的时限竟然给了10s!10s!10s!(泪目),立刻就充满了斗志,信心满满的开始打爆力~~(^ _ ^)~~。。。
n^2的暴力相信大家都会,坐标轴上两点的距离为横坐标之差的平方乘以纵坐标之差的平方(勾股)。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<queue>
using namespace std;
long long n,ans;
struct c{
long long x,y;
}a[60000];
int main() {
scanf("%lld",&n);
for(int i=1;i<=n;i++)
scanf("%lld%lld",&a[i].x,&a[i].y);
ans=-1;
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
ans=max(ans,(a[j].x-a[i].x)*(a[j].x-a[i].x)+(a[j].y-a[i].y)*(a[j].y-a[i].y));
}
}
printf("%lld",ans);
}