#include "cave.h"
#include <cassert>
int S[5000];
int D[5000];
bool fixed[5000];
bool pre;
bool ok(int l, int r, int i) {
for(int i=l; i<=r; ++i) if(!fixed[i]) S[i] ^= 1;
bool cur = tryCombination(S)==i;
for(int i=l; i<=r; ++i) if(!fixed[i]) S[i] ^= 1;
return pre != cur;
}
void exploreCave(int n) {
for(int i=0; i<n; ++i) {
int x=0, y=n-1, z;
pre = tryCombination(S)==i;
while(x<y) {
z=(x+y)>>1;
if(ok(x,z,i)) y=z;
else x=z+1;
}
assert(x==y);
D[x] = i;
fixed[x] = true;
if (tryCombination(S) == i) {
S[x] ^= 1;
}
}
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... |