제출 #105202

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

void exploreCave(int n)
{
	int est[n],ord[n],resp[n];
	for(int i=0;i<n;i++)
	{
		est[i]=0;
		ord[i]=-1;
		resp[i]=0;
	}
	if(n==1)
	{
		int k=tryCombination(est);
		if(k==0)est[0]=1;
		ord[0]=0;
		answer(est,ord);
	}
	for(int at=0;at<n;at++)
	{
		int ini=0,fim=n-1;
		int k=tryCombination(est);
		while(ini<fim)
		{
			if(k>at || k==-1)
			{
				for(int i=ini;i<=fim;i++)if(ord[i]==-1)est[i]=1-est[i];
			}
			int m=(ini+fim)/2;
			for(int i=ini;i<=m;i++)if(ord[i]==-1)est[i]=1-est[i];
			k=tryCombination(est);
			if(k>at || k==-1)fim=m;
			else ini=m+1;
			if(k<=at && k>=0)
			{
				for(int i=ini;i<=fim;i++)if(ord[i]==-1)est[i]=1-est[i];
				k=at+1;
			}
		}
		ord[ini]=at;
		resp[ini]=est[ini];
	}
	answer(resp,ord);
}
#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...