错误信息
Wrong Answer. wrong answer On line 1 column 1, read 2, expected 8.
希望有大佬看看/kel
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
struct point
{
double x,y;
}p[100010],pv,s[100010];
int n;
double check(point a1,point a2,point b1,point b2)
{
return (a1.x-a2.x)*(b1.y-b2.y)-(b1.x-b2.x)*(a1.y-a2.y);
}
double dis(point a,point b)
{
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
bool cmp(point a,point b)
{
double c=check(pv,a,pv,b);
if(c>0||(c==0&&dis(pv,a)<dis(pv,b))) return 1;
return 0;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%lf%lf",&p[i].x,&p[i].y);
if(i!=1&&p[i].y<p[1].y) swap(p[i],p[1]);
}
pv=p[1];
sort(p+2,p+n+1,cmp);
s[1]=p[1];
int cnt=1;
for(int i=2;i<=n;i++)
{
while(cnt>1&&(check(s[cnt-1],s[cnt],s[cnt],p[i])<=0)) cnt--;
s[++cnt]=p[i];
}
s[++cnt]=p[1];
int j=1;
double ans=0;
for(int i=1;i<=cnt;i++)
{
while(check(s[i],s[i+1],s[i],s[j])<check(s[i],s[i+1],s[i],s[j%cnt+1])) j=j%cnt+1;
ans=max(ans,max(dis(s[i],s[j])*dis(s[i],s[j]),dis(s[i+1],s[j])*dis(s[i+1],s[j])));
}
printf("%.0lf",ans);
}