Submission #16330

#TimeUsernameProblemLanguageResultExecution timeMemory
16330cometCave (IOI13_cave)C++98
25 / 100
242 ms520 KiB
#include <stdio.h> #include <stdlib.h> #include <cstring> #include "cave.h" int a[5000],b[5000],p,n; bool flip(int L,int R){ bool ret=0; for(int i=L;i<=R;i++){ if(b[i]<0)a[i]=!a[i],ret=1; } return ret; } void finish(){ for(int i=0;i<n;i++){ if(b[i]<0){ a[i]=!a[i]; b[i]=tryCombination(a); a[i]=!a[i]; } } answer(a,b); exit(0); } void f(int L,int R,int v){ if(L==R){ b[L]=v; if(p==v)a[L]=!a[L]; return; } int mid=(L+R)/2; if(!flip(L,mid)){ f(mid+1,R,v); return; } int t=tryCombination(a); if(t<0){ finish(); return; } flip(L,mid); if(p==t)f(mid+1,R,v); else f(L,mid,v); } void exploreCave(int N){ n=N; memset(b,-1,sizeof(b)); for(int i=0;i<N;i++){ /*printf("%d\n",i); for(int j=0;j<N;j++)printf("%d ",a[j]);puts(""); for(int j=0;j<N;j++)printf("%d ",b[j]);puts("");*/ p=tryCombination(a); if(p<0)finish(); f(0,N-1,i); } answer(a,b); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...