Submission #1305683

#TimeUsernameProblemLanguageResultExecution timeMemory
1305683hosh동굴 (IOI13_cave)C++20
12 / 100
155 ms592 KiB
#include "cave.h"
#include <iostream>
#include <vector>
using namespace std;

void exploreCave(int N) {
    vector<int> S(N, 0);
    vector<int> D(N, -1);
    vector<int> A(N, 0);
    vector<int> B;

    for (int door = 0; door < N; door++) {

        for (int i = 0; i < N; i++) {
            if (A[i] == 0) {
                S[i] = 1;
            }
        }

        int trt = tryCombination(S.data());
        int doorv;

        if (trt == -1 || trt > door) {
            doorv = 1;
        } else {
            doorv = 0;
        }

        B.clear();
        for (int i = 0; i < N; i++) {
            if (A[i] == 0) {
                B.push_back(i);
            }
        }

        while (B.size() > 1) {

            int half = B.size() / 2;

            for (int i = 0; i < B.size(); i++) {
                if (i < half) {
                    S[B[i]] = doorv;
                } else {
                    S[B[i]] = 1 - doorv;
                }
            }

            trt = tryCombination(S.data());

            if (trt == -1 || trt > door) {
                B.resize(half);
            } else {
                B.erase(B.begin(), B.begin() + half);
            }
        }

        int sw = B[0];
        A[sw] = 1;
        S[sw] = doorv;
        D[door] = sw;
    }

    answer(S.data(), D.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...