Submission #317191

#TimeUsernameProblemLanguageResultExecution timeMemory
317191seedkinCave (IOI13_cave)C11
100 / 100
1054 ms892 KiB
#include "cave.h"

int open[5005]; // index = switch number return = 1, 0 ( open value )
int target[5005]; // index = switch number return = door number

int S[5005]; // index == switch number return = 1, 0 ( open Value request)
int door[5005]; // index = door 번호 return 1, 0 (1 == open, 0 == close);

void exploreCave(int N) {
    for(int i =0; i < N; i++) {
        open[i] = -1;
        target[i] = -1;        
    }

    for(int i = 0; i < N; i++) { // door number
        for(int j = 0; j < N; j++) { // switch number
            if(open[j] != -1) {
                S[j] = open[j];
            } else {
                S[j] = 1;
            }
        }
        int ans = tryCombination(S);
        if (ans > i || ans == -1) door[i] = 1;
        else door[i] = 0;

        int low = 0;
        int high = N;
        int mid = (low + high) / 2;

        while ( low != mid) {
            for (int j = 0;  j < mid; j++) {
                if(open[j] != -1) {
                    S[j] = open[j];
                } else {
                    S[j] = door[i];
                }                
            }
            for (int j = mid; j < N; j++) {
                if(open[j] != -1) {
                    S[j] = open[j];
                } else {
                    S[j] = 1-door[i];
                }
            }
            ans = tryCombination(S);
            if(ans > i || ans == -1) {
                high = mid;
                mid = (low + high) / 2;

            } else { 
                low = mid;
                mid = (low + high) / 2;
            }
        }

        open[mid] = door[i];
        target[mid] = i;        
    }

    answer(open, target);
}
#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...