제출 #1197214

#제출 시각아이디문제언어결과실행 시간메모리
1197214SpyrosAliv동굴 (IOI13_cave)C++17
12 / 100
232 ms536 KiB
#include "cave.h"
using namespace std;

void exploreCave(int N) {
    int n = N;
    int corr[n], rep[n];
    for (int i = 0; i < n; i++) {
        corr[i] = rep[i] = -1;
    }
    int nxtQ[n];
    bool done[n];
    for (int j = 0; j < n; j++) {
        nxtQ[j] = 0;
        done[j] = false;
    }
    for (int i = 0; i < n; i++) {
        bool closed = (tryCombination(nxtQ) == i);
        int lo = 0, hi = n-1;
        int finIdx = 0;
        while (lo <= hi) {
            int mid = (lo + hi) / 2;
            int nxt[n];
            for (int j = 0; j < n; j++) nxt[j] = nxtQ[j];
            for (int j = 0; j <= mid; j++) {
                if (!done[j]) nxt[j] = 1;
            }
            bool c2 = (tryCombination(nxt) == i);
            if (c2 == closed) {
                lo = mid+1;
            }
            else {
                hi = mid-1;
                finIdx = mid;
            }
        }
        rep[i] = finIdx;
        if (closed) corr[i] = 1;
        else corr[i] = 0;
        nxtQ[rep[i]] = corr[i];
        done[rep[i]] = true; 
    }
    answer(corr, rep);
}
#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...