제출 #107086

#제출 시각아이디문제언어결과실행 시간메모리
107086stefdasca동굴 (IOI13_cave)C++14
100 / 100
1288 ms640 KiB
#include "cave.h" #include<bits/stdc++.h> void exploreCave(int N) { int S[N+2], D[N+2]; memset(S, 0, sizeof(S)); memset(D, 0, sizeof(D)); int P[N+2], pus[N+2]; memset(P, 0, sizeof(P)); memset(pus, 0, sizeof(pus)); for(int i = 0; i < N; ++i) { int st = 0; int dr = N-1; for(int j = 0; j < N; ++j) if(pus[j]) P[j] = S[j]; else P[j] = 1; int ans = tryCombination(P); bool ce = 0; if(ans > i || ans == -1) ce = 1; while(st < dr) { int mid = (st + dr) / 2; for(int j = 0; j < N; ++j) { if(pus[j]) P[j] = S[j]; else if(st <= j && j <= mid) P[j] = ce; else P[j] = ce ^ 1; } ans = tryCombination(P); if(ans > i || ans == -1) dr = mid; else st = mid + 1; } pus[st] = 1; D[st] = i; S[st] = ce; } answer(S, D); }
#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...