제출 #1289854

#제출 시각아이디문제언어결과실행 시간메모리
1289854kahoul동굴 (IOI13_cave)C++20
51 / 100
30 ms476 KiB
#include <bits/stdc++.h> using namespace std; #include "cave.h" const int maxn = 2005; bool visited[maxn]; int s[maxn]; int lever_door[maxn]; void set_all_to (int l, int r, int x) { for (int i = l; i <= r; i++) { if (visited[i]) continue; s[i] = x; } } void divide (int l, int r, int d) { //scout << "call " << l << ' ' << r << '\n'; if (l == r) { s[l] = 1; int door = tryCombination(s); if (door == d) s[l] = 0; //cout << "LEVER " << l << ' ' << s[l] << ' ' << lever_door[l] << '\n'; lever_door[l] = d; visited[l] = 1; return; } int m = (l + r) / 2; set_all_to(l, m, 0); int door0 = tryCombination(s); set_all_to(l, m, 1); int door1 = tryCombination(s); //cout << door0 << ' ' << door1 << '\n'; if (door0 != door1 && (door0 == d || door1 == d)) { divide(l, m, d); } else { divide(m + 1, r, d); } } void exploreCave (int n) { for (int i = 0; i < n; i++) { s[i] = 0; } for (int i = 0; i < n; i++) { divide(0, n - 1, i); //cout << '\n'; } answer(s, lever_door); }
#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...