제출 #223953

#제출 시각아이디문제언어결과실행 시간메모리
223953DS007동굴 (IOI13_cave)C++14
100 / 100
362 ms636 KiB
#include <bits/stdc++.h>
#include "cave.h"
using namespace std;
 
void exploreCave(int n) {
    int d_[n], s_[n];
    memset(d_, -1, sizeof(d_));
    memset(s_, -1, sizeof(s_));
 
    for (int i = 0; i < n; i++) {
        int s[n] = {};
        for (int j = 0; j < n; j++) {
            if (s_[j] != -1)
                s[j] = s_[j];
        }
 
        int x = tryCombination(s);
        int l = 0, h = n - 1, ans = -1;
 
        while (l <= h) {
            int temp[n];
            copy(s, s + n, temp);
            int mid = (l + h) / 2;
 
            for (int j = l; j <= mid; j++)
                temp[j] = d_[j] == -1 ? 1 : s[j];
 
            int y = tryCombination(temp);
            if ((x == i && y != i) || (x != i && y == i))
                ans = mid, h = mid - 1;
            else
                l = mid + 1;
        }
 
        d_[ans] = i;
        s_[ans] = x == 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...