Submission #538339

#TimeUsernameProblemLanguageResultExecution timeMemory
538339alextodoranTriangles (CEOI18_tri)C++17
Compilation error
0 ms0 KiB
/**
 ____ ____ ____ ____ ____
||a |||t |||o |||d |||o ||
||__|||__|||__|||__|||__||
|/__\|/__\|/__\|/__\|/__\|

**/

#include <bits/stdc++.h>
#include "trilib.h"

using namespace std;

typedef long long ll;

const int N_MAX = 40000;

int get_n ();
bool is_clockwise (int i, int j, int k);
void give_answer (int s);
void init();

int n;
bool side[N_MAX + 2];
int p[N_MAX + 2];

bool cmp (const int &i, const int &j) {
    if (side[i] != side[j]) {
        return side[i] < side[j];
    } else {
        return !is_clockwise(i, 1, j);
    }
}

int main () {
    init();
    n = get_n();
    for (int i = 3; i <= n; i++) {
        side[i] = !is_clockwise(1, 2, i);
    }
    iota(p + 1, p + n + 1, 1);
    sort(p + 3, p + n + 1, cmp);
    for (int i = 3; i <= n; i++) {
        side[i] = !is_clockwise(1, 2, p[i]);
    }
    for (int i = 2; i <= n; i++) {
        if (side[i] == 0 && (i == n || side[i + 1] == 1)) {
            rotate(p + 1, p + 2, p + i + 1);
            break;
        }
    }

    deque <int> st;
    for (int k = 1; k <= n; k++) {
        int i = p[k];
        while ((int) st.size() >= 2 && !is_clockwise(st.end()[-2], st.end()[-1], i)) {
            st.pop_back();
        }
        st.push_back(i);
    }
    while ((int) st.size() >= 3 && !is_clockwise(st.end()[-2], st.end()[-1], st[0])) {
        st.pop_back();
    }
    while ((int) st.size() >= 3 && !is_clockwise(st.end()[-1], st[0], st[1])) {
        st.pop_front();
    }

    give_answer((int) st.size());
    return 0;
}

Compilation message (stderr)

tri.cpp:19:6: error: ambiguating new declaration of 'bool is_clockwise(int, int, int)'
   19 | bool is_clockwise (int i, int j, int k);
      |      ^~~~~~~~~~~~
In file included from tri.cpp:10:
trilib.h:6:5: note: old declaration 'int is_clockwise(int, int, int)'
    6 | int is_clockwise(int a, int b, int c);
      |     ^~~~~~~~~~~~