제출 #1076452

#제출 시각아이디문제언어결과실행 시간메모리
1076452juicyCave (IOI13_cave)C++17
0 / 100
89 ms860 KiB
#include "cave.h" #include <bits/stdc++.h> int S[5000], D[5000], q[5000]; void exploreCave(int N) { memset(S, -1, sizeof(S)); auto search = [&]() { std::vector<int> cands; for (int i = 0; i < N; ++i) { if (S[i] != -1) { q[D[i]] = S[i]; } else { cands.push_back(D[i]); q[D[i]] = 0; } } int door = tryCombination(q); if (door == -1) { q[cands[0]] = 1; door = tryCombination(q); D[cands[0]] = door; S[cands[0]] = 0; return; } int l = 0, r = cands.size() - 1, p = -1; while (l <= r) { int md = (l + r) / 2; for (int i = 0; i <= md; ++i) { q[cands[i]] = 1; } if (tryCombination(q) == door) { p = md; r = md - 1; } else { l = md + 1; } for (int i = 0; i <= md; ++i) { q[cands[i]] = 0; } } assert(~p); D[cands[p]] = door; S[cands[p]] = 1; }; int cnt = 0; while (cnt++ < N) { search(); } answer(S, D); }
#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...