#include #include #include #include #include using namespace std; struct point{ double x; double y; double angle; }; int n; point init; vector points; vector hull; void angle_sort(); void compute_hull(); bool tree_on_hull(); double hull_length(); double hull_to_tree(); double hull_with_gap(int index); bool in_line(); bool small_angle(const struct point &p1,const struct point &p2) {return(p1.angle > p2.angle);} double ccw(struct point &p1,struct point &p2,struct point &p3) {return((p2.x-p1.x)*(p3.y-p1.y) - (p2.y-p1.y)*(p3.x-p1.x));} double distance(double x1,double y1,double x2,double y2) {return(sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)));}; int main () { int i; while(cin>>n) { for(i=0;i>p->x>>p->y; points.push_back(*p); } angle_sort(); compute_hull(); if(tree_on_hull()||in_line()) printf("%.2lf\n",hull_length()); else printf("%.2lf\n",hull_to_tree()); points.clear(); hull.clear(); } return(0); } void angle_sort() { init = points[0]; int i; for(i=1;i