Submission #1324654

#TimeUsernameProblemLanguageResultExecution timeMemory
1324654kasamchiCave (IOI13_cave)C++20
100 / 100
267 ms504 KiB
#include "cave.h"
#include <bits/stdc++.h>
using namespace std;

void exploreCave(int N) {
    int S[N] = {}, E[N] = {};
    for (int tar = 0; tar < N; tar++) {
        int s[N] = {};
        for (int i = 0; i < tar; i++) {
            s[E[i]] = S[E[i]];
        }
        int res = tryCombination(s), op;
        if (res == -1 || res > tar) {
            op = 0;
        } else {
            op = 1;
        }

        int ll = -1, rr = N - 1;
        while (ll + 1 < rr) {
            int mm = ll + (rr - ll) / 2;
            for (int i = 0; i <= mm; i++) {
                s[i] = op;
            }
            for (int i = mm + 1; i < N; i++) {
                s[i] = !op;
            }
            for (int i = 0; i < tar; i++) {
                s[E[i]] = S[E[i]];
            }
            res = tryCombination(s);
            if (res == -1 || res > tar) {
                rr = mm;
            } else {
                ll = mm;
            }
        }
        E[tar] = rr;
        S[E[tar]] = op;
    }

    int D[N] = {};
    for (int i = 0; i < N; i++) {
        D[E[i]] = i;
    }
    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...