Submission #1216945

#TimeUsernameProblemLanguageResultExecution timeMemory
1216945lukasuliashviliCave (IOI13_cave)C++20
0 / 100
257 ms536 KiB
#include "cave.h"
#include <bits/stdc++.h>
using namespace std;

void exploreCave(int N) {
    vector<int> s(N, 0), fix(N, 0), ans(N, -1);
    vector<bool> used(N, false);

    for (int i = 0; i < N; ++i) {
        int known = tryCombination(s.data());

        int l = 0, r = N - 1, door = -1;

        while (l <= r) {
            int mid = (l + r) / 2;

            for (int j = 0; j < N; ++j) {
                if (ans[j] != -1) {
                    s[j] = fix[j];
                } else if (j <= mid) {
                    s[j] = 0;
                } else {
                    s[j] = 1;
                }
            }

            int res = tryCombination(s.data());

            if (res == -1 || res > i) {
                r = mid - 1;
            } else {
                door = res;
                l = mid + 1;
            }
        }

        ans[i] = door;
        used[door] = true;
        
        s = fix;
        s[door] = 0;
        int res0 = tryCombination(s.data());

        fix[door] = (res0 == -1 || res0 > i) ? 0 : 1;
    }

    answer(fix.data(), ans.data());
}
#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...