Submission #377807

#TimeUsernameProblemLanguageResultExecution timeMemory
377807jlallas384Cave (IOI13_cave)C++14
46 / 100
19 ms492 KiB
#include <bits/stdc++.h>
#include "cave.h"

using namespace std;

// binary search xxxx x
// flip all left if first open door doesnt change xxxxx
void exploreCave(int N){
    int ans[N] = {};
    int arr[N];
    for(int i = 0; i < N; i++){
        arr[i] = -1;
    }
    if(N <= 100){
        while(1){
            int cur = tryCombination(ans);
            if(cur == -1) break;
            // test all switch if next opened door increase, then switch i point to cur
            for(int i = 0; i < N; i++) if(arr[i] == -1){
                ans[i] ^= 1;
                int ret = tryCombination(ans);
                if(ret == -1 || ret > cur){
                    arr[i] = cur;
                    break;
                }
                ans[i] ^= 1;
            }
        }
    }
    if(tryCombination(ans) == -1){
        for(int i = 0; i < N; i++) if(arr[i] == -1){
            ans[i] ^= 1;
            arr[i] = tryCombination(ans);
            ans[i] ^= 1;
        }
        answer(ans,arr);
        return;
    }
    while(1){
        int resp = tryCombination(ans);
        if(resp == -1) break;
        ans[resp] ^= 1;
    }
    for(int i = 0; i < N; i++){
        arr[i] = i;
    }
    answer(ans,arr);
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...