제출 #236066

#제출 시각아이디문제언어결과실행 시간메모리
236066pere_gil동굴 (IOI13_cave)C++14
0 / 100
192 ms504 KiB
#include <iostream> #include "cave.h" using namespace std; void exploreCave(int n) { ///da 25pts /* int D[N],S[N]; for(int i=0;i<N;i++){ S[i]=0; } if(tryCombination(S)==-1){ for(int i=0;i<N;i++){ S[i]=1; D[i]=tryCombination(S); S[i]=0; } } else{ for(int i=0;i<N;i++){ D[i]=i; if(tryCombination(S)==i) S[i]=1; } } answer(S,D); */ bool nochange[n]; for(int i=0;i<n;i++){ nochange[i]=false; } int dosw[n]; int onoff[n]; for(int i=0;i<n;i++){ int exp[n]; for(int i=0;i<n;i++){ if(nochange[i]) exp[i]=onoff[i]; else exp[i]=1; } int trycom=tryCombination(exp); int good=0; if(trycom==-1 or trycom>i){ good=1; } ///ahora se viene lo chido binary int iz=0,der=n-1; while(iz<der){ int media=(iz+der)/2; for(int j=iz;j<=media;j++){ if(nochange[j]) exp[j]=onoff[j]; else exp[j]=good; } for(int j=media;j<=der;j++){ if(nochange[j]) exp[j]=onoff[j]; else exp[j]=1-good; } int comb=tryCombination(exp); if(comb==-1 or comb>i) der=media; else iz=media+1; } nochange[iz]=true; dosw[i]=iz; onoff[iz]=good; } answer(onoff,dosw); }
#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...