Submission #550600

#TimeUsernameProblemLanguageResultExecution timeMemory
550600OlympiaCave (IOI13_cave)C++17
Compilation error
0 ms0 KiB
#include <iostream>
#include <vector>
#include <iomanip>
#include <algorithm>
#include <cassert>
#include <map>
#include <complex>
#include <cmath>
#include <set>
#include "cave.h"
using namespace std;
vector<bool> oracle = {true, true, false, true};
vector<int> door = {3, 1, 0, 2};
int n = 4;
int tryCombination(bool v[]) {
    vector<int> doors;
    for (int i = 0; i < n; i++) {
        if (v[i] == oracle[i]) {
            doors.push_back(door[i]);
        }
    }
    sort(doors.begin(), doors.end());
    for (int i = 0; i < doors.size(); i++) {
        if (doors[i] != i) {
            return i;
        }
    }
    return doors.size();
}
vector<pair<int,bool>> vec;
void fill (bool v[]) {
    for (auto& p: vec) {
        v[p.first] = p.second;
    }
}
/*
void exploreCave (int n) {
    bool c[n]; int arr[n];
    for (int i = 0; i < n; i++) {
        vector<bool> a;
        a.assign(n, true);
        fill(a);
        bool b = (tryCombination(a) >= i + 1);
        int l = 0;
        int r = n - 1;
        while (l != r) {
            int m = (l + r)/2;
            a.assign(n, !b);
            for (int j = 0; j <= m; j++) {
                a[j] = b;
            }
            fill(a);
            if (tryCombination(a) >= i + 1) {
                r = m;
            } else {
                l = m + 1;
            }
        }
        //cout << i << " " << l << '\n';
        arr[l] = i;
        vec.emplace_back(l, b);
    }
    answer(c, arr);
}
 */

void exploreCave (int N) {
    assert(oracle.size() == door.size());
    vector<bool> c; c.assign(n, false);
    vector<int> arr; arr.assign(n, 0);
    for (int i = 0; i < n; i++) {
        bool a[n];
        for (int j = 0; j < n; j++) a[j] = true;
        fill(a);
        bool b = (tryCombination(a) >= i + 1);
        int l = 0;
        int r = n - 1;
        while (l != r) {
            int m = (l + r)/2;
            for (int j = 0; j < n; j++) a[j] = !b;
            for (int j = 0; j <= m; j++) {
                a[j] = b;
            }
            fill(a);
            if (tryCombination(a) >= i + 1) {
                r = m;
            } else {
                l = m + 1;
            }
        }
        arr[l] = i;
        vec.emplace_back(l, b);
    }
    for (auto& p: vec) {
        c[p.first] = p.second;
    }
    answer(c, arr);
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
}

Compilation message (stderr)

cave.cpp: In function 'int tryCombination(bool*)':
cave.cpp:23:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |     for (int i = 0; i < doors.size(); i++) {
      |                     ~~^~~~~~~~~~~~~~
cave.cpp: In function 'void exploreCave(int)':
cave.cpp:97:12: error: cannot convert 'std::vector<bool>' to 'int*'
   97 |     answer(c, arr);
      |            ^
      |            |
      |            std::vector<bool>
In file included from cave.cpp:10:
cave.h:9:17: note:   initializing argument 1 of 'void answer(int*, int*)'
    9 | void answer(int S[], int D[]);
      |             ~~~~^~~