Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.53 KB | None | 0 0
  1. typedef pair<int,int> par;
  2. #define x first
  3. #define y second
  4.  
  5. int ccw( par A, par B, par C ) {
  6.   B.x -= A.x; B.y -= A.y;
  7.   C.x -= A.x; C.y -= A.y;
  8.   return B.x*C.y - C.x*B.y;
  9. }
  10.  
  11. vector<par> convex_hull( vector<par> V ) {
  12.   sort( V.begin(), V.end() );
  13.   for( int i = V.size()-2; i >= 0; --i )
  14.     V.push_back( V[i] );
  15.  
  16.   vector<par> A;
  17.   for( int i = 0; i < V.size(); ++i ) {
  18.     while( A.size() >= 2 && ccw( A[A.size()-2], A[A.size()-1], V[i] ) <= 0 ) A.pop_back();
  19.     A.push_back( V[i] );
  20.   }
  21.   A.pop_back();
  22.   return A;
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement