제출 #137303

#제출 시각아이디문제언어결과실행 시간메모리
137303GioChkhaidze동굴 (IOI13_cave)C++14
100 / 100
1344 ms640 KiB
#include <bits/stdc++.h>
#include "cave.h"

using namespace std;

void exploreCave(int N) {
    int ANS[N],f[N],ANSidx[N];
    
    for (int i=0; i<N; i++) 
    	ANS[i]=0,ANSidx[i]=0,f[i]=0;
    
    for (int i=0; i<N; i++) {
		for (int j=0; j<N; j++) 
			if (!f[j]) ANS[j]=0;
			
		int x=tryCombination(ANS),KO=0;
		if (x==-1) x=N;
		if (x==i) KO=1;

		int l=0,r=N-1,mid,idx=-1;

		while (l<=r) {
	    	mid=(l+r)/2;

	    	for (int j=0; j<=mid; j++)  if (!f[j]) ANS[j]=KO;
			for (int j=mid+1; j<N; j++) if (!f[j]) ANS[j]=1-KO;
	    	
	    	int x=tryCombination(ANS);
	    	if (x==-1) x=N;

	    	if (i<x) { idx=mid; r=mid-1; }
	    				   else l=mid+1;
		}
	
		ANS[idx]=KO,ANSidx[idx]=i;
		f[idx]=1;
	}

    answer(ANS,ANSidx);
    return ;
}
#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...