Submission #704076

#TimeUsernameProblemLanguageResultExecution timeMemory
704076Potato3218Cave (IOI13_cave)C++17
100 / 100
368 ms588 KiB
#include "cave.h" #include <bits/stdc++.h> using namespace std; int switches[5006]; int sToDoors[5006]; int tryDoors[5006]; void solveDoor(int door, int N){ for (int i = 0; i < N; i++){ if(switches[i] == -1) tryDoors[i] = 0; else tryDoors[i] = switches[i]; } int d = tryCombination(tryDoors); int is_open; if(d==door) is_open = 0; else is_open = 1; int mini = -1; int maxi = N; while (maxi - mini > 1){ int mid = (maxi + mini) / 2; for (int i = 0; i < mid; i++){ if(switches[i] == -1) tryDoors[i] = 1; else tryDoors[i] = switches[i]; } int firstDoor = tryCombination(tryDoors); if (is_open == 1 && firstDoor != door) mini = mid; else if (is_open == 0 && firstDoor == door) mini = mid; else maxi = mid; for (int i = 0; i < mid; i++){ if(switches[i] == -1) tryDoors[i] = 0; else tryDoors[i] = switches[i]; } } sToDoors[mini] = door; switches[mini] = !is_open; } void exploreCave(int N) { memset(switches, -1, sizeof switches); for (int i = 0; i < N; i++){ solveDoor(i, N); } answer(switches, sToDoors); }
#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...