제출 #1132286

#제출 시각아이디문제언어결과실행 시간메모리
1132286viwlesxq동굴 (IOI13_cave)C++20
100 / 100
144 ms568 KiB
#include "cave.h"
#include <bits/stdc++.h>

using namespace std;

void exploreCave(int n) {
    int s[n], d[n];

    vector<int> left;
    for (int i = 0; i < n; ++i)
        left.push_back(i);

    int i = 0;

    while (!left.empty()) {
        int c = 0;
        for (auto j : left)
            s[j] = 0;

        int t = tryCombination(s);
        if (t != -1 && t <= i) c = 1;

        int lo = -1, hi = left.size() - 1;
        while (lo + 1 < hi) {
            int mid = (lo + hi) / 2;

            for (int j = 0; j <= mid; ++j)
                s[left[j]] = c;
            for (int j = mid + 1; j < left.size(); ++j)
                s[left[j]] = c ^ 1;

            t = tryCombination(s);

            if (t != -1 && t <= i) lo = mid;
            else hi = mid;
        }

        d[left[hi]] = i++;
        s[left[hi]] = c;
        left.erase(left.begin() + hi);
    }

    answer(s, d);
}
#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...