计算几何。
非常忧伤WA了数次,都是在第七组数据。
开始以为是排序方法错了,
后来发现是枚举的时候对比问题。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n;
struct lx
{
double x,y;
}l[100001];
bool cmp(lx a,lx b)
{
return (pow(a.x,2)+pow(a.y,2))<(pow(b.x,2)+pow(b.y,2));
}
int main()
{
while(~scanf("%d",&n))
{
for(int i=0;i<n;i++)
scanf("%lf%lf",&l[i].x,&l[i].y);
sort(l,l+n,cmp);
double ans=sqrt(pow(l[n-1].x-l[0].x,2)+pow(l[n-1].y-l[0].y,2));
for(int i=0;i<n;i++)
{
int k=i+1;
while(l[k].y-l[i].y<ans&&k<n)k++;
for(int j=i+1;j<=k;j++)
ans=min(ans,sqrt(pow(l[j].x-l[i].x,2)+pow(l[j].y-l[i].y,2)));
}
printf("%.3lf\n",ans);
}
}