Submission #115994

#TimeUsernameProblemLanguageResultExecution timeMemory
115994MeloricTriangles (CEOI18_tri)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
//#define int int64_t
#define pb push_back
#define X first
#define Y second
#define pii pair<int, int>

using namespace std;
/*
int get_n(){
    int c; cin >> c;
    return c;
}
void give_answer(int a){
    cout << a;
}
bool is_clockwise(int a, int b, int c){
    cout << a << ' '<<b <<' '<<c<<endl;
    bool d; cin >> d;
    return d;
}*/
bool ask(int a, int b, int c){
    a++; b++; c++;
    return is_clockwise(a, b, c);
}
void quick(int l, int r, vector<int>&srt){
    if(r-l<2)return;
    vector<int> sml, big;
    int piv = srt[l];
    for(int i = l+1; i<r; i++){
        int cur = srt[i];
        if(ask(srt[0], piv, cur))sml.pb(cur);
        else big.pb(cur);
    }
    int counter = l;
    for(int i = 0; i < sml.size(); i++){
        srt[l+i] = sml[i];
        counter++;
    }
    srt[counter] = piv;
    counter++;
    for(int i = 0; i < big.size(); i++){
        srt[i+counter]=big[i];
    }
    //for(auto i : srt)cout << i+1 <<' ';
    //cout << endl;
    quick(l, counter-1, srt);
    quick(counter, r, srt);
}
signed main(){
    ios_base::sync_with_stdio(false);
    //cin.tie(0);
    srand(41);
    int n; n = get_n();
    if(n==3)give_answer(3);
    vector<int> srt(n);
    iota(srt.begin(), srt.end(), 0);
    random_shuffle(srt.begin(), srt.end());
    //for(auto i : srt)cout << i <<' ';
    quick(1, n, srt);
    //for(auto i : srt)cout << i+1 <<' ';
    //for(int i = 0; i< n; i++)srt.pb(srt[i]);
    vector<int> hull;
    //for(auto i : srt)cout << i+1 <<' ';
    //cout << endl;
    for(int i = 0; i< srt.size(); i++){
        int sz = hull.size();
        while(sz>1 && ask(hull[sz-2], hull[sz-1], srt[i])){
            hull.pop_back();
            sz--;
        }
        hull.pb(srt[i]);
    }
    deque<int> dq;
    for(auto i : srt)dq.pb(i);
    while(1){
        int flag = 1;
        int cur = dq.back(); dq.pop_back();
        if(ask(dq.back(), cur, dq.front())){
            flag = 0;
        }else dq.pb(cur);
        cur = dq.front(); dq.pop_front();
        if(ask(dq.back(), cur, dq.front())){
            flag = 0;
        }else dq.push_front(cur);
        if(flag)break;
    }
    give_answer(dq.size());
    return 0;
    /*
    vector<int> tmp(n);
    for(auto i : hull)tmp[i]++;
    int ans = 0;
    for(auto i : tmp){
        if(i == 2)ans++;
    }

    give_answer(ans);
    return 0;*/
}

Compilation message (stderr)

tri.cpp: In function 'bool ask(int, int, int)':
tri.cpp:24:12: error: 'is_clockwise' was not declared in this scope
     return is_clockwise(a, b, c);
            ^~~~~~~~~~~~
tri.cpp:24:12: note: suggested alternative: 'funlockfile'
     return is_clockwise(a, b, c);
            ^~~~~~~~~~~~
            funlockfile
tri.cpp: In function 'void quick(int, int, std::vector<int>&)':
tri.cpp:36:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < sml.size(); i++){
                    ~~^~~~~~~~~~~~
tri.cpp:42:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < big.size(); i++){
                    ~~^~~~~~~~~~~~
tri.cpp: In function 'int main()':
tri.cpp:54:16: error: 'get_n' was not declared in this scope
     int n; n = get_n();
                ^~~~~
tri.cpp:54:16: note: suggested alternative: 'getwc'
     int n; n = get_n();
                ^~~~~
                getwc
tri.cpp:55:13: error: 'give_answer' was not declared in this scope
     if(n==3)give_answer(3);
             ^~~~~~~~~~~
tri.cpp:66:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i< srt.size(); i++){
                    ~^~~~~~~~~~~~
tri.cpp:88:5: error: 'give_answer' was not declared in this scope
     give_answer(dq.size());
     ^~~~~~~~~~~