Submission #1216801

#TimeUsernameProblemLanguageResultExecution timeMemory
1216801takoshanavaCave (IOI13_cave)C++20
51 / 100
155 ms532 KiB
#include "cave.h"
#include <bits/stdc++.h>
using namespace std;
int R[5000], D[5000];
bool vis[5000];

void exploreCave(int N) {
    for (int i = 0; i < N; ++i) {
        R[i] = 0;
        vis[i] = false;
    }

    for (int j = 0; j < N; ++j) {
        int base = tryCombination(R); 
        int tar = (base == -1 or base > j) ? 0 : 1;

        int l = 0, r = N - 1;
        while (l < r) {
            int mid = (l + r) / 2;

            int tmp[5000];
            for (int i = 0; i < N; ++i)
                tmp[i] = R[i];

            for (int i = l; i <= mid; ++i)
                if (!vis[i])
                    tmp[i] ^= 1;

            int res = tryCombination(tmp);
            int ntar = (res == -1 or res > j) ? 0 : 1;

            if (ntar != tar)
                r = mid;
            else
                l = mid + 1;
        }

        int idx = l;
        vis[idx] = true;

        R[idx] ^= 1;
        int test = tryCombination(R);
        int ans = (test == -1 or test > j) ? R[idx] : (R[idx] ^ 1);
        R[idx] = ans;

        D[idx] = j;
    }

    answer(R, 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...