#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... |