Submission #231008

#TimeUsernameProblemLanguageResultExecution timeMemory
231008peijarCave (IOI13_cave)C++17
12 / 100
226 ms632 KiB
#include <bits/stdc++.h> #include "cave.h" using namespace std; #define SZ(v) ((int)(v).size()) //void answer(int S[], int D[]); //int tryCombination(int S[]); void exploreCave(int nb_portes) { int switches[nb_portes], portes[nb_portes]; for (int i(0); i < nb_portes; ++i) switches[i] = 0; vector<bool> fixed(nb_portes); int lst_ans(tryCombination(switches)); if (lst_ans == -1) lst_ans = nb_portes; auto flip_range = [&](int left, int right) { for (int i(left); i <= right; ++i) if (!fixed[i]) switches[i] ^= 1; }; for (int i(0); i < nb_portes; ++i) { int lft(0), rgt(nb_portes-1); while (lft < rgt) { int mid = (lft + rgt)/2; for (int i(lft); i <= mid; ++i) if (!fixed[i]) switches[i] ^= 1; // flip_range(lft, mid); int nxt_ans = tryCombination(switches); if (nxt_ans == -1) nxt_ans = nb_portes; for (int i(lft); i <= mid; ++i) if (!fixed[i]) switches[i] ^= 1; // flip_range(lft, mid); if ((lst_ans <= i and nxt_ans > i) or (lst_ans > i and nxt_ans <= i)) rgt = mid; else lft = mid+1; } assert(!fixed[lft]); if (lst_ans <= i) { switches[lft] ^= 1; lst_ans = tryCombination(switches); if (lst_ans == -1) lst_ans = nb_portes; } fixed[lft] = true; portes[i] = lft; assert(lst_ans > i); } answer(switches, portes); }

Compilation message (stderr)

cave.cpp: In function 'void exploreCave(int)':
cave.cpp:19:7: warning: variable 'flip_range' set but not used [-Wunused-but-set-variable]
  auto flip_range = [&](int left, int right)
       ^~~~~~~~~~
#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...