Submission #1076472

#TimeUsernameProblemLanguageResultExecution timeMemory
1076472EntityPlantt동굴 (IOI13_cave)C++17
12 / 100
371 ms700 KiB
#include "cave.h" #include <vector> bool query(int I, int N, int S[], std::vector <int> &U, int L, int R, bool rev) { int Q[N]; for (int i = 0; i < N; i++) Q[i] = S[i]; for (int &i : U) Q[U[i]] = !rev; for (int i = L; i <= R; i++) Q[U[i]] = rev; int res = tryCombination(Q); return res > I || res < 0; } void exploreCave(int N) { int S[N] = {}, D[N]; std::vector <int> undiscovered; for (int i = 0; i < N; i++) undiscovered.push_back(i); for (int i = 0; i < N; i++) { int l = 0, r = undiscovered.size() - 1; bool reverse = query(i, N, S, undiscovered, l, r, 1); while (l < r) { int m = l + r >> 1; if (query(i, N, S, undiscovered, l, m, reverse)) r = m; else l = m + 1; } D[undiscovered[l]] = i; S[undiscovered[l]] = reverse; undiscovered.erase(undiscovered.begin() + l); } answer(S, D); }

Compilation message (stderr)

cave.cpp: In function 'void exploreCave(int)':
cave.cpp:21:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   21 |    int m = l + r >> 1;
      |            ~~^~~
#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...