Submission #996392

#TimeUsernameProblemLanguageResultExecution timeMemory
996392phoenixCave (IOI13_cave)C++17
100 / 100
433 ms748 KiB
#include "cave.h" #include <vector> using namespace std; void exploreCave(int n) { int s[n] = {}, d[n] = {}; bool answered[n] = {}; for (int door = 0; door < n; door++) { for (int i = 0; i < n; i++) { if (answered[i]) continue; s[i] = 0; } if (tryCombination(s) == door) { // [1] int l = -1, r = n - 1; while (r - l > 1) { int mid = (l + r) / 2; for (int i = 0; i < n; i++) { if (answered[i]) continue; if (i <= mid) s[i] = 1; else s[i] = 0; } if (tryCombination(s) == door) l = mid; else r = mid; } d[r] = door; s[r] = 1; answered[r] = true; } else { // [0] int l = -1, r = n - 1; while (r - l > 1) { int mid = (l + r) / 2; for (int i = 0; i < n; i++) { if (answered[i]) continue; if (i <= mid) s[i] = 0; else s[i] = 1; } if (tryCombination(s) == door) l = mid; else r = mid; } d[r] = door; s[r] = 0; answered[r] = true; } } 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...