#include "cave.h"
#include <vector>
//#include<bits/stdc++.h>
using namespace std ;
int n ;
int *pos, *loc;
bool vis[10000] ;
int it, col ;
void flip(){
for(int i = 0 ;i < n ;i++)
pos[i]^=1 ;
}
vector<int> btns ;
void init(int N){
n = N ;
pos = new int[N] ;
loc = new int[N] ;
memset(pos , 0 , sizeof(int) * N) ;
memset(loc , 0 , sizeof(int) * N) ;
for(int i = 0 ;i < N ;i++)
btns.push_back(i) ;
}
int go(vector<int> vec, int door){
int ret = n ;
int *qu = pos ;
for(auto u : vec)
qu[u] = 0 ;
ret = tryCombination(qu) ;
if(ret != door)
col = 0 ;
for(auto u : vec)
qu[u] = 1 ;
int ret2 = tryCombination(qu) ;
if(ret2 != door)
col = 1;
if(ret > ret2)
swap(ret , ret2) ;
return (ret2 > door && ret == door) || (ret == -1 && ret2 == door) ;
}
void solve( vector<int> swi , int door){
if(swi . size() == 1){
pos[swi[0]] = col ;
if(tryCombination(pos) == door){
col^= 1;
pos[swi[0]] ^= 1 ;
}
loc[ swi[0] ] = it ;
for(int i = 0 ;i < (int) btns.size() ; ++ i){
if(btns[i] == swi[0]){
btns.erase(btns.begin() + i) ;
break ;
}
}
it++ ;
return ;
}
vector<int> LHS , RHS ;
int sz = (int) swi.size() ;
for(int i = 0 ;i < sz ;i ++){
if(i < sz / 2)
LHS.push_back(swi[i]) ;
else
RHS.push_back(swi[i]) ;
}
if(go(LHS, door)){
solve(LHS, door) ;
}else{
solve(RHS, door) ;
}
}
void exploreCave(int N) {
init(N);
for(int i = 0 ;i < n;i++){
solve(btns , i) ;
}
answer(pos , loc) ;
}
Compilation message
cave.cpp: In function 'void init(int)':
cave.cpp:22:9: error: 'memset' was not declared in this scope
22 | memset(pos , 0 , sizeof(int) * N) ;
| ^~~~~~
cave.cpp:3:1: note: 'memset' is defined in header '<cstring>'; did you forget to '#include <cstring>'?
2 | #include <vector>
+++ |+#include <cstring>
3 | //#include<bits/stdc++.h>