#include #include #include using namespace std; #define eps 1e-6 typedef struct { double x,y; }point; point a[20005]; double ret; point tag[20005]; double Dist(point p,point q) { return sqrt((p.x-q.x)*(p.x-q.x)+(p.y-q.y)*(p.y-q.y)); } bool cmpx(point p,point q) { if (p.x!=q.x) return p.xret/2) continue; for (k=j+1;k<=r;k++) { ret=min(ret,m+Dist(a[j],a[k])+Dist(a[i],a[k])); } } } return; } mid=(l+r)/2; Merge(l,mid); Merge(mid+1,r); int up=0; for (i=l;i<=r;i++) { if (fabs(a[mid].x-a[i].x)ret/2) continue; for (k=j+1;k