제출 #317158

#제출 시각아이디문제언어결과실행 시간메모리
317158seedkin동굴 (IOI13_cave)C++98
0 / 100
204 ms504 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 find[5005]; // index = switch 번호 return = 1, 0 ( 1 == find, 0 == not find) 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; find[i] = 0; } for(int i = 0; i < N; i++) { // door number for(int j = 0; j < N; j++) { // switch number if(find[j]) { S[j] = open[j]; } 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 = low ; j < mid; j++) { if(find[j]) { S[j] = open[j]; } S[j] = door[i]; } for(int j = mid; j < high ; j++) { if(find[j]) { S[j] = open[j]; } 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; } } find[mid] = 1; target[mid] = i; open[mid] = door[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...