제출 #78441

#제출 시각아이디문제언어결과실행 시간메모리
78441SaboonTriangles (CEOI18_tri)C++14
컴파일 에러
0 ms0 KiB
#include <iostream>
#include <queue>
#include <bitset>
#include <stack>
#include <vector>
#include <trilib.h>
#include <cstring>
#include <cmath>
#include <unordered_map>
#include <map>
#include <set>
#include <algorithm>
#include <iomanip>
#define prime first
#define alpha second
#define PB push_back
#define PF push_front
#define MP make_pair

using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef unsigned long long ull;

const int maxn = 1e5 + 100;

int first = 1;
/*
int get_n () {
    int k;
    cin >> k;
    return k;
}

bool is_clockwise (int fi, int se, int th) {
    cout << fi << " " << se << " " << th << endl;
    bool k;
    cin >> k;
    return k;
}

void give_answer (int x) {
    cout << x << endl;
}
*/
int pre[maxn], nex[maxn];

void remove (int fi, int mid, int se) {
    pre[se] = fi;
    nex[fi] = se;
    first = fi;
}

void insert (int fi, int mid, int se) {
    nex[fi] = mid;
    nex[mid] = se;
    pre[se] = mid;
    pre[mid] = fi;
}

int main() {
    ios::sync_with_stdio(false);
    int n = get_n ();
    for (int i = 1; i <= n; i++)
        a[i] = i;
    random_shulfe (a + 1, a + n + 1);
    if (is_clockwise (a[1], a[2], a[3])) {
        nex[a[1]] = a[2];
        nex[a[2]] = a[3];
        nex[a[3]] = a[1];
        pre[a[1]] = a[3];
        pre[a[2]] = a[1];
        pre[a[3]] = a[2];
    }
    else {
        nex[a[1]] = a[3];
        nex[a[3]] = a[2];
        nex[a[2]] = a[1];
        pre[a[1]] = a[2];
        pre[a[2]] = a[3];
        pre[a[3]] = a[1];
    }
    first = a[1];
    for (int i = 4; i <= n; i++) {
        int st = first, found = 0;
        while (true) {
            if (!is_clockwise (st, nex[st], a[i])) {
                insert (st, a[i], nex[st]);
                found = 1;
                break;
            }
            st = nex[st];
            if (st == first)
                break;
        }
        if (!found)
            continue;
        while (!is_clockwise (a[i], nex[a[i]], nex[nex[a[i]]]))
            remove (a[i], nex[a[i]], nex[nex[a[i]]]);
        while (!is_clockwise (pre[pre[a[i]]], pre[a[i]], a[i]))
            remove (pre[pre[a[i]]], pre[a[i]], a[i]);
    }
    int cnt = 0, st = first;
    while (true) {
        cnt ++;
        st = nex[st];
        if (st == first)
            break;
    }
    give_answer (cnt);
}

컴파일 시 표준 에러 (stderr) 메시지

tri.cpp: In function 'int main()':
tri.cpp:67:9: error: 'a' was not declared in this scope
         a[i] = i;
         ^
tri.cpp:68:20: error: 'a' was not declared in this scope
     random_shulfe (a + 1, a + n + 1);
                    ^
tri.cpp:68:5: error: 'random_shulfe' was not declared in this scope
     random_shulfe (a + 1, a + n + 1);
     ^~~~~~~~~~~~~
tri.cpp:68:5: note: suggested alternative: 'random_r'
     random_shulfe (a + 1, a + n + 1);
     ^~~~~~~~~~~~~
     random_r