#include <iostream>
#include <vector>
#include <algorithm>
#include "cave.h"
using namespace std;
void solve(int num, vector<pair<int, int>> &ns, int &n) {
int ini = 0, fin = n - 1, ob = 1;
int tri[n];
for (int t1 = 0; t1 < n; t1++) {
tri[t1] = ob;
}
for (int t1 = 0; t1 < n; t1 ++) {
if (ns[t1].first != -1) {
tri[t1] = ns[t1].second;
}
}
if (tryCombination(tri) == num) {
ob = !ob;
}
for (int t1 = 0; t1 < n; t1++) {
tri[t1] = !ob;
}
for (int t1 = 0; t1 < n; t1 ++) {
if (ns[t1].first != -1) {
tri[t1] = ns[t1].second;
}
}
while (ini != fin) {
//cout << endl;
int mit = (ini + fin) / 2;
for (int t1 = ini; t1 <= mit; t1++) {
tri[t1] = ob;
}
for (int t1 = 0; t1 < n; t1 ++) {
if (ns[t1].first != -1) {
tri[t1] = ns[t1].second;
}
}
//cout << ini << " " << fin << endl;
if (tryCombination(tri) == num) {
ini = mit + 1;
} else {
for (int t1 = ini; t1 <= mit; t1++) {
tri[t1] = !ob;
}
fin = mit;
}
//cout << ini << " " << fin << endl;
//cout << endl;
}
ns[ini] = {num, ob};
return ;
}
void exploreCave(int n) {
vector<pair<int, int>> ns(n, {-1, 0});
for (int t1 = 0; t1 < n; t1 ++) {
solve(t1, ns, n);
}
int s[n], d[n];
for (int t1 = 0; t1 < n; t1 ++) {
s[t1] = ns[t1].second;
d[t1] = ns[t1].first;
}
answer(s, d);
return ;
}
# | 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... |