#include "cave.h"
#include<iostream>
using namespace std;
int open[5007];
int sol[5007];
int n;
void solve(int x){
    //cout << "SOLVE " << x << endl;
    int l=0,r=n-1;
    int base[n];
    int fn;
    int ans=0;
    for(int i=0;i<n;++i) base[i]=open[i];
    for(int i=0;i<n;++i){
        if(base[i]==-1) base[i]=1;
    }
    if(tryCombination(base)==-1 || tryCombination(base)>x) fn=1;
    else fn=0;
    //cout << "fn = " << tryCombination(base) << " " << fn << endl;
    while(l<=r){
        for(int i=0;i<n;++i) base[i]=open[i];
        int mid=(l+r)>>1;
        for(int i=0;i<=mid;++i){
            if(base[i]==-1) base[i]=fn;
        }
        for(int i=mid;i<n;++i){
            if(base[i]==-1) base[i]=1-fn;
        }
        //for(int i=0;i<n;++i) cout << base[i] << " ";
        //cout << " A " << mid << " " << tryCombination(base) << endl;
        if(tryCombination(base)>x || tryCombination(base)==-1){
            ans=mid;
            r=mid-1;
        }
        else{
            l=mid+1;
        }
    }
    open[ans]=fn;
    sol[ans]=x;
    //cout << ans << endl;
}
void exploreCave(int N) {
    n=N;
    for(int i=0;i<N;++i) open[i]=-1;
    for(int i=0;i<N;++i){
        solve(i);
    }
    int a[n],b[n];
    for(int i=0;i<n;++i) a[i]=open[i];
    for(int i=0;i<n;++i) b[i]=sol[i];
    answer(open,sol);
}
| # | 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... |