#include<bits/stdc++.h>
#include "cave.h"
using namespace std;
void exploreCave(int N) {
int sw[N]={};
memset(sw,0,sizeof sw);
int x[N]={};
for(int i=0;i<N;i++)
x[i]=i;
int index[N]={};
int l=0,r=N-1;
for(int i=0;i<N;i++)
{
int p=tryCombination(sw);
if(p!=i)
{
for(int i=l;i<=r;i++)
sw[x[i]]=!sw[x[i]];
}
int cur[N]={};
for(int i=0;i<N;i++)
cur[i]=sw[i];
int ll=l,rr=r;
while(ll<rr)
{
int mid=(ll+rr)/2;
for(int i=ll;i<=mid;i++)
{
cur[x[i]]=!cur[x[i]];
}
p=tryCombination(cur);
for(int i=ll;i<=mid;i++)
{
cur[x[i]]=!cur[x[i]];
}
if(p!=i)
rr=mid;
else
ll=mid+1;
}
index[x[ll]]=i;
sw[x[ll]]=!sw[x[ll]];
for(int i=ll;i<r;i++)
x[i]=x[i+1];
r--;
}
answer(sw,index);
}
# | 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... |