Submission #988046

#TimeUsernameProblemLanguageResultExecution timeMemory
988046badontCave (IOI13_cave)C++17
0 / 100
162 ms580 KiB
#include "cave.h" #include <bits/stdc++.h> using namespace std; void exploreCave(int N) { /* ... */ int which_lock[N]; int correct_choice[N]; int buffer[N]; for (int i = 0; i < N; i++) which_lock[i] = correct_choice[i] = buffer[i] = -1; for (int iter = 0; iter < N; iter++) { vector<int> todo; todo.reserve(N); for (int i = 0; i < N; i++) { if (which_lock[i] != -1) { buffer[i] = correct_choice[i]; } else { buffer[i] = 0; todo.push_back(i); } assert(buffer[i] != -1); } int ret = tryCombination(buffer); int open_value = 1; if (ret == -1 or ret > iter) { // is open open_value = 0; } for (auto u : todo) buffer[u] = open_value; int lo = 0, hi = (int)todo.size() - 1; while (lo < hi) { int mid = (lo + hi) >> 1; for (int i = 0; i < mid; i++) buffer[todo[i]] = (open_value ^ 1); for (int i = mid; i < (int)todo.size(); i++) buffer[todo[i]] = open_value; int ret = tryCombination(buffer); if (ret == -1 or ret > iter) hi = mid; else lo = mid + 1; } which_lock[todo[lo]] = iter; correct_choice[todo[lo]] = open_value; } answer(which_lock, correct_choice); }
#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...