Submission #107236

#TimeUsernameProblemLanguageResultExecution timeMemory
107236degeloCave (IOI13_cave)C++17
100 / 100
477 ms640 KiB
#include<bits/stdc++.h>
#define maxn 5010
#include"cave.h"
using namespace std;
int s[maxn],d[maxn],t[maxn],N;
void setar(int ini,int fim,int v[],int val){
	for(int i=ini;i<=fim;i++){
		if(s[i]==1-val) continue;	
		v[i]=val;
	}
}
/*int tryCombination(int v[]){
	for(int i=0;i<N;i++)	printf("%d ",v[i]);
	printf("\n");
	int a;
	scanf("%d",&a);
	return a;
}*/
void exploreCave(int N){
	setar(0,N-1,s,2);
	for(int i=0;i<N;i++){
		int ini=0,fim=N-1;
		setar(ini,fim,t,0);
		int t1=tryCombination(t);
		int r;
		if(t1==i) r=1;
		else r=0;
		while(ini<fim){
			int m=(ini+fim)/2;
			setar(ini,m,t,r);
			setar(m+1,fim,t,1-r);
			int t2=tryCombination(t);
			if(t2==i){
				ini=m+1;
			}
			else{
				fim=m;
			}
		}
		d[ini]=i;
		s[ini]=r;
		//printf("%d %d\n",s[ini],d[ini]);
		t[ini]=r;
	}
	answer(s,d);
}
/*int main (){
	scanf("%d",&N);
	exploreCave(N);
	for(int i=0;i<N;i++)	printf("%d ",s[i]);
	printf("\n");
	for(int i=0;i<N;i++)	printf("%d ",d[i]);
	printf("\n");
}*/
#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...