Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef pair<int,int> par;
- #define x first
- #define y second
- int ccw( par A, par B, par C ) {
- B.x -= A.x; B.y -= A.y;
- C.x -= A.x; C.y -= A.y;
- return B.x*C.y - C.x*B.y;
- }
- vector<par> convex_hull( vector<par> V ) {
- sort( V.begin(), V.end() );
- vector<par> A;
- for( int i = 0; i < V.size(); ++i ) {
- while( A.size() >= 2 && ccw( A[A.size()-2], A[A.size()-1], V[i] ) < 0 ) A.pop_back();
- A.push_back( V[i] );
- }
- for( int i = V.size()-2; i >= 0; --i ) {
- while( A.size() >= 2 && ccw( A[A.size()-2], A[A.size()-1], V[i] ) < 0 ) A.pop_back();
- A.push_back( V[i] );
- }
- A.pop_back();
- return A;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement