Submission #432138

#TimeUsernameProblemLanguageResultExecution timeMemory
432138MilosMilutinovicCave (IOI13_cave)C++14
100 / 100
1063 ms580 KiB
#include "cave.h" #include <bits/stdc++.h> using namespace std; int tryCombination(int S[]); void answer(int S[], int D[]); void exploreCave(int N) { int combination[N]; for (int i = 0; i < N; i++) combination[i] = 0; bool locked[N]; for (int i = 0; i < N; i++) locked[i] = false; int position[N]; for (int i = 0; i < N; i++) { vector<int> positions; for (int j = 0; j < N; j++) if (!locked[j]) positions.push_back(j); int current = tryCombination(combination); bool is_correct = (current == -1 || current > i); if (!is_correct) { assert(current == i); int bot = 0, top = (int) positions.size() - 1, pos = -1; while (bot <= top) { int mid = bot + top >> 1; for (int j = 0; j <= mid; j++) combination[positions[j]] ^= 1; int value = tryCombination(combination); if (value == -1 || value > i) pos = mid, top = mid - 1; else bot = mid + 1; for (int j = 0; j <= mid; j++) combination[positions[j]] ^= 1; } assert(pos != -1); combination[positions[pos]] = 1; locked[positions[pos]] = true; position[positions[pos]] = i; } else { int bot = 0, top = (int) positions.size() - 1, pos = -1; while (bot <= top) { int mid = bot + top >> 1; for (int j = 0; j <= mid; j++) combination[positions[j]] ^= 1; int value = tryCombination(combination); if (value == i) pos = mid, top = mid - 1; else bot = mid + 1; for (int j = 0; j <= mid; j++) combination[positions[j]] ^= 1; } assert(pos != -1); locked[positions[pos]] = true; position[positions[pos]] = i; } } answer(combination, position); }

Compilation message (stderr)

cave.cpp: In function 'void exploreCave(int)':
cave.cpp:32:31: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   32 |                 int mid = bot + top >> 1;
      |                           ~~~~^~~~~
cave.cpp:52:31: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   52 |                 int mid = bot + top >> 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...