Submission #941412

#TimeUsernameProblemLanguageResultExecution timeMemory
941412tsetCave (IOI13_cave)C++14
100 / 100
628 ms604 KiB
#include<bits/stdc++.h> #include"cave.h" using namespace std; vector<int> posLevierOpt, corresp; bool test(int deb, int fin, int porteAOuvrir, int N) { int tabTest[N]; for(int i=0; i<N; i++) { if(posLevierOpt[i]!= -1) tabTest[i] = posLevierOpt[i]; else if(i>= deb && i <= fin) tabTest[i] = 1; else tabTest[i] = 0; } int firstDoorClosed = tryCombination(tabTest); if(firstDoorClosed == -1 || firstDoorClosed > porteAOuvrir) return true; return false; } void exploreCave(int N) { posLevierOpt.assign(N, -1); corresp.assign(N, -1); for(int iDoor = 0; iDoor< N; iDoor++) { bool stateDoorInit = test(N, N, iDoor, N); int deb = 0; int fin = N-1; while (deb < fin) { int mid = (deb + fin)/2; int res = test(deb, mid, iDoor, N); if(res!=stateDoorInit) fin = mid; else deb = mid +1; } if(stateDoorInit) posLevierOpt[deb] = 0; else posLevierOpt[deb] = 1; corresp[deb] = iDoor; } int answer1[N], answer2[N]; for(int i=0; i< N;i++) answer1[i] = posLevierOpt[i]; for(int i=0; i< N;i++) answer2[i] = corresp[i]; answer(answer1, answer2); }
#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...