This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "cave.h"
#include <bits/stdc++.h>
#define endl "\n"
#define F first
#define S second
#define pb push_back
#define all(x) x.begin() , x.end()
#define mid ((r+l)>>1)
#define lx (n<<1)
#define rx ((n<<1)|1)
typedef long long ll;
using namespace std;
const int N = 5e3+5;
const long long oo = 1e18 ;
int n , a[N] , b[N] , cur[N] ;
bool vis[N] , is ;
ll bs (ll l , ll r , ll x)
{
    if (l == r)
        return l ;
    for (int i = l ; i<=r ; i++)
    {
        if (vis[i]) continue ;
        cur[i] = !is ;
    }
    for (int i = l ; i<=mid ; i++)
    {
        if (vis[i]) continue ;
        cur[i] = is ;
    }
    bool p = (tryCombination(cur) == x) ;
    for (int i = l ; i<=mid ; i++)
    {
        if (vis[i]) continue ;
        cur[i] = !is ;
    }
    if (p)
        return bs(mid , r , x) ;
    else
        return bs(l , mid , x) ;
}
void exploreCave(int N) {
    n = N ;
    for (int i = 0 ; i<n ; i++)
    {
        for (int j = 0 ; j < n ; j++)
        {
            if (vis[j])
            {
                cur[j] = a[j] ;
                continue ;
            }
            a[j] = 0 ;
        }
        is = (tryCombination(a) == i) ;
        ll j = bs (0 , n-1 , i) ;
        a[j] = is ;
        b[j] = i ;
        vis[j] = true ;
    }
    answer (a , b) ;
}
| # | 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... |