Submission #1305687

#TimeUsernameProblemLanguageResultExecution timeMemory
1305687hoshCave (IOI13_cave)C++20
12 / 100
311 ms608 KiB
#include "cave.h" #include <iostream> #include <vector> using namespace std; void exploreCave(int N) { vector<int> S(N, 0); vector<int> finalS(N, 0); vector<int> D(N, -1); vector<int> A(N, 0); vector<int> B; for (int door = 0; door < N; door++) { for (int i = 0; i < N; i++) { if (A[i] == 1) { S[i] = finalS[i]; } else { S[i] = 1; } } int trt = tryCombination(S.data()); int doorv; if (trt == -1 || trt > door) { doorv = 1; } else { doorv = 0; } B.clear(); for (int i = 0; i < N; i++) { if (A[i] == 0) { B.push_back(i); } } while (B.size() > 1) { int half = B.size() / 2; for (int i = 0; i < N; i++) { if (A[i] == 1) { S[i] = finalS[i]; } } for (int i = 0; i < B.size(); i++) { if (i < half) { S[B[i]] = doorv; } else { S[B[i]] = 1 - doorv; } } trt = tryCombination(S.data()); if (trt == -1 || trt > door) { B.resize(half); } else { B.erase(B.begin(), B.begin() + half); } } int sw = B[0]; A[sw] = 1; finalS[sw] = doorv; D[door] = sw; } answer(finalS.data(), D.data()); }
#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...