#include #include #include #include #include #include #include #include using namespace std; typedef pair< int, int > point; #define X first #define Y second int n; vector< point > A; inline long long ccw( point A, point B, point C ) { long long sum = 0; sum += A.X * ( B.Y - C.Y ); sum += B.X * ( C.Y - A.Y ); sum += C.X * ( A.Y - B.Y ); if( sum > 0 ) return +1; if( sum < 0 ) return -1; return 0; } int main( void ) { scanf( "%d", &n ); A.resize( n ); for( int i = 0; i < n; ++i ) scanf( "%d %d", &A[i].X, &A[i].Y ); int work = 2; for( int i = work; i < n; ++i ) { while( work >= 2 && ccw( A[work-2], A[work-1], A[i] ) > 0 ) --work; A[ work++ ] = A[i]; } double sum = 0; for( int i = 1; i < work; ++i ) { long long dx = A[i].X - A[i-1].X; long long dy = A[i].Y - A[i-1].Y; sum += sqrt( double( dx*dx + dy*dy ) ); } printf( "%.2lf\n", sum ); return (0-0); }