Submission #781573

#TimeUsernameProblemLanguageResultExecution timeMemory
781573mindiyakCave (IOI13_cave)C++14
0 / 100
711 ms468 KiB
#include "cave.h"
#include <vector>
#include <iostream>

using namespace std;

vector<int> combination(int N,int start,int end,int val,vector<int> connected_door,vector<int> correct_combo){
    vector<int> arr;
    for(int i=0;i<N;i++){
        if(connected_door[i] != -1){
            arr.push_back(correct_combo[i]);
        }else{
            if(start <= i and i < end){
                arr.push_back(val);
            }else{
                arr.push_back((val == 0) ? 1 : 0);
            }
        }
    }
    return arr;
}

void exploreCave(int N) {

    vector<int> connected_door(N,-1);
    vector<int> correct_combo(N,0);

    for(int i=0;i<N;i++){
        int combo = 0;
        int* S = &combination(N,0,N,0,connected_door,correct_combo)[0];
        if (tryCombination(S) == i){
            combo = 1;
        }

        int left = 0,right = N;
        while(left < right){
            int m = left + ((right-left)/2);

            int* S = &combination(N,left,m+1,combo,connected_door,correct_combo)[0];
            if (tryCombination(S) == i+1){
                right = m-1;
            }else{
                left = m;
            }
        }
        connected_door[i] = left;
        correct_combo[i] = combo;
    }

    answer(&correct_combo[0],&connected_door[0]);
}
#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...