Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.63 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.   vector<par> A;
  14.   for( int i = 0; i < V.size(); ++i ) {
  15.     while( A.size() >= 2 && ccw( A[A.size()-2], A[A.size()-1], V[i] ) < 0 ) A.pop_back();
  16.     A.push_back( V[i] );
  17.   }
  18.   for( int i = V.size()-2; i >= 0; --i ) {
  19.     while( A.size() >= 2 && ccw( A[A.size()-2], A[A.size()-1], V[i] ) < 0 ) A.pop_back();
  20.     A.push_back( V[i] );
  21.   }
  22.   A.pop_back();
  23.   return A;
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement