Submission #1310702

#TimeUsernameProblemLanguageResultExecution timeMemory
1310702aleksandre동굴 (IOI13_cave)C++20
0 / 100
82 ms512 KiB
#include "cave.h"
#include <bits/stdc++.h>
using namespace std;

void exploreCave(int N) {
    int S[N];
    int P[N];
    for (int i = 0; i < N; i++) {
        S[i] = 0;
        P[i] = -1;
    }
    vector<int> S_unk;
    for (int i = 0; i < N; i++) S_unk.push_back(i);
    while (true) {
        int j = tryCombination(S);
        if (j == -1) break;
        int l = 0, r = S_unk.size() - 1;
        while (l < r) {
            int m = (l + r) / 2;
            for (int k = 0; k <= m; k++)
                S[S_unk[k]] = 1 - S[S_unk[k]];
            int res = tryCombination(S);
            if (res > j) r = m;
            else l = m + 1;
            for (int k = 0; k <= m; k++)
                S[S_unk[k]] = 1 - S[S_unk[k]];
        }
        int idx = S_unk[l];
        S[idx] = 1 - S[idx];
        P[j] = idx;
        S_unk.erase(S_unk.begin() + l);
    }
    answer(S, P);
}
#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...