제출 #671278

#제출 시각아이디문제언어결과실행 시간메모리
671278birthdaycake동굴 (IOI13_cave)C++17
100 / 100
823 ms552 KiB
#include<bits/stdc++.h>
#include "cave.h"
using namespace std;
void exploreCave(int n) {
    int vs[n],val[n],sw[n];
    memset(vs, 0, sizeof vs);
    memset(val, 0, sizeof val);
    memset(sw, 0, sizeof sw);
    
    
    for(int i = 0; i < n; i++){
        int comb = 0;
        for(int j = 0; j < n; j++){
            if(!vs[j]) val[j] = 0;
        }
        int x = tryCombination(val);
        
        if(x == i) comb = 1;
        
        int l = 0, r = n - 1;
        while(l < r){
            int mid = (l + r) / 2;
            for(int j = l; j <= mid; j++){
                if(!vs[j]) val[j] = comb;
            }
            for(int j = 0; j < l; j++){
                if(!vs[j]) val[j] = !comb;
            }
            for(int j = mid + 1; j < n; j++){
                if(!vs[j]) val[j] = !comb;
            }
            x = tryCombination(val);
            if(x == i){
                l = mid + 1;
            }else{
                r = mid;
            }
        }
        val[r] = comb;
        sw[r] = i;
        vs[r] = 1;
    }
    answer(val, sw);
}
#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...