题目描述
题目
给定平面上 n 个点,求凸包直径。
输入格式
第一行一个正整数 n。
接下来 n 行,每行两个整数 x,y,表示一个点的坐标。
输出格式
输出一行一个整数,表示答案的平方。
输入输出样例
输入 #1
4
0 0
0 1
1 1
1 0
输出 #1
2
分析:
大约 O ( n 2 ) O(n^2) O(n2)的复杂度+一堆玄学操作洛谷上过紫题?
勾股定理暴力求距离 取最大 即可 极限操作
CODE:
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
ll n,x[50005],y[50005],ans;
int main(){
scanf("%lld",&n);
if(n==1)
{
printf("-1");
return 0; //数据问题
}
n=min(48000ll,n); //玄学
for(register int i=1;i<=n;i++)
{
scanf("%lld%lld",&x[i],&y[i]);
for(register int j=1;j<i;j++)
ans=max(ans,(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); //勾股求距离
}
printf("%lld",ans);
return 0;
}