Exemple #1
0
VP cal_convex(VP a) {
    VP r;
    sort(all(a));
    for(const auto& p: a) {
        while(sz(r)>1 && cross(r[sz(r)-2], r[sz(r)-1], p)<=0) r.pop_back();
        r.pb(p);
    }
    int K=sz(r);
    reverse(all(a));
    for(const auto& p: a) {
        while(sz(r)>K && cross(r[sz(r)-2], r[sz(r)-1], p)<=0) r.pop_back();
        r.pb(p);
    }
    r.pop_back();
    return r;
}