#include <bits/stdc++.h>
#include "cave.h"
using namespace std;
void exploreCave(int N) {
int s[N], d[N], tries[N];
memset(d, -1, sizeof d);
for (int room = 0; room < N; room++) {
vector <int> consi;
for (int i = 0; i < N; i++)
if (d[i] == -1) consi.emplace_back(i);
for (int i = 0; i < N; i++) {
if (d[i] != -1) tries[i] = s[i];
else tries[i] = 0;
}
int ask = tryCombination(tries); int state = -1;
if (ask == -1 || ask > room) state = 0;
else state = 1;
int low = 0, high = consi.size() - 1, pos = -1;
while (low <= high) {
int mid = (low + high) >> 1;
for (int i = 0; i <= mid; i++) tries[consi[i]] = state;
for (int i = mid + 1; i < consi.size(); i++) tries[consi[i]] = state ^ 1;
int ask = tryCombination(tries);
if (ask == -1 || ask > room) high = (pos = mid) - 1;
else low = mid + 1;
}
int mySwitch = consi[pos];
d[mySwitch] = room;
s[mySwitch] = state;
}
answer(s, d);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |