Submission #169292

#TimeUsernameProblemLanguageResultExecution timeMemory
169292AlexLuchianovCave (IOI13_cave)C++14
100 / 100
1171 ms564 KiB
#include "cave.h"
#include <vector>

using namespace std;

void exploreCave(int N) {
  int sol[N] = {0};
  int door[N] = {0}, seen[N] = {0};
  for(int i = 0; i < N; i++){
    if(i != tryCombination(sol))
      for(int j = 0; j < N; j++)
        if(seen[j] == 0)
          sol[j] ^= 1;
    int from = 0, to = N - 1;

    while(from < to){
      int mid = (from + to) / 2;
      for(int j = 0; j <= mid; j++)
        if(seen[j] == 0)
          sol[j] ^= 1;
      int result = tryCombination(sol);
      for(int j = 0; j <= mid; j++)
        if(seen[j] == 0)
          sol[j] ^= 1;
      if(i == result)
        from = mid + 1;
      else
        to = mid;
    }

    sol[from] ^= 1;
    door[from] = i;
    seen[from] = 1;
  }
  answer(sol, door);
}

#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...