Submission #73261

#TimeUsernameProblemLanguageResultExecution timeMemory
73261win11905Triangles (CEOI18_tri)C++11
100 / 100
50 ms2908 KiB
#include <bits/stdc++.h>
#include "trilib.h"
using namespace std;

int n;
int val;

vector<int> convex_hull(vector<int> &V) {
    vector<int> ret;
    bool st = false;
    for(auto x : V) {
        if(ret.size() < 2) {
            ret.emplace_back(x);
            continue;
        }
        while(ret.size() >= 2 and is_clockwise(ret[ret.size()-2], ret.back(), x)) ret.pop_back();
        ret.emplace_back(x);
    }
    return ret;
}

int main() {
    n = get_n();
    vector<int> L, R;
    for(int i = 3; i <= n; ++i) if(is_clockwise(1, 2, i)) L.emplace_back(i); else R.emplace_back(i);
    sort(L.begin(), L.end(), [&](const int &a, const int &b) { return !is_clockwise(1, a, b); });
    sort(R.begin(), R.end(), [&](const int &a, const int &b) { return !is_clockwise(1, a, b); });
    L.emplace_back(2), R.emplace_back(1);
    L = convex_hull(L), R = convex_hull(R);    
    vector<int> ret;
    for(auto x : L) ret.emplace_back(x);
    for(auto x : R) ret.emplace_back(x);
    ret = convex_hull(ret);
    list<int> l; for(auto x : ret) l.push_back(x);
    bool status = true;
    while(status) {
        status = false;
        int a = l.back(); l.pop_back();
        if(is_clockwise(l.back(), a, l.front())) status = true;
        else l.push_back(a);
        a = l.front(); l.pop_front();
        if(!is_clockwise(l.front(), a, l.back())) status = true;
        else l.push_front(a);
    }
    give_answer((int)l.size());
}

Compilation message (stderr)

tri.cpp: In function 'std::vector<int> convex_hull(std::vector<int>&)':
tri.cpp:10:10: warning: unused variable 'st' [-Wunused-variable]
     bool st = false;
          ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...