제출 #937525

#제출 시각아이디문제언어결과실행 시간메모리
937525Alcabel동굴 (IOI13_cave)C++17
100 / 100
143 ms604 KiB
#include <bits/stdc++.h> #include "cave.h" using namespace std; void exploreCave(int N) { vector<int> rest(N); iota(rest.begin(), rest.end(), 0); int S[N], D[N]; for (int i = 0; i < N; ++i) { S[i] = 0; } for (int i = 0; i < N; ++i) { int start = tryCombination(S); if (start == -1) { start = N; } int left = 0, right = rest.size(); while (right - left > 1) { int mid = left + (right - left) / 2; for (int j = left; j < mid; ++j) { S[rest[j]] = 1; } int closed = tryCombination(S); if (closed == -1) { closed = N; } for (int j = left; j < mid; ++j) { S[rest[j]] = 0; } if ((start == i && closed > i) || (start > i && closed == i)) { right = mid; } else { left = mid; } } D[rest[left]] = i; if (start == i) { S[rest[left]] = 1; } else { S[rest[left]] = 0; } swap(rest[left], rest.back()); rest.pop_back(); } 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...