제출 #397411

#제출 시각아이디문제언어결과실행 시간메모리
397411danielcm585Cave (IOI13_cave)C++11
100 / 100
1096 ms548 KiB
#include "cave.h"

#include <bits/stdc++.h>
using namespace std;

void exploreCave(int N) {
    int res[N], s[N], d[N];
    memset(res,-1,sizeof(res));
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            s[j] = (res[j] != -1 ? res[j] : 0);
        }
        int cur = (tryCombination(s) == i);
        int p = -1;
        for (int l = 0, r = N-1; l <= r; ) {
            int mid = (l+r)/2;
            for (int j = 0; j < N; j++) {
                if (res[j] != -1) s[j] = res[j];
                else if (j <= mid) s[j] = cur;
                else s[j] = cur^1;
            }
            if (tryCombination(s) != i) {
                p = mid;
                r = mid-1;
            }
            else l = mid+1;
        }
        res[p] = cur;
        d[p] = i;
        // int l, r;
        // for (l = 0, r = N-1; l < r; ) {
        //     int mid = (l+r)/2;
        //     for (int j = 0; j < N; j++) {
        //         if (res[j] != -1) s[j] = res[j];
        //         else if (l <= j && j <= mid) s[j] = cur;
        //         else s[j] = cur^1;
        //     }
        //     if (tryCombination(s) != i) r = mid;
        //     else l = mid+1;
        // }
        // res[l] = cur;
        // d[l] = i;
    }
    answer(res,d);
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…