Submission #287290

#TimeUsernameProblemLanguageResultExecution timeMemory
287290AMO5Cave (IOI13_cave)C++17
0 / 100
432 ms504 KiB
#include <bits/stdc++.h>
#include "cave.h"

#define sz(x) (int)x.size()
using namespace std;
const int mxn = 5e3+5;
int n,s[mxn],d[mxn],c[mxn];
bool vis[mxn];
int tryCombination(int s[]);
void answer(int s[],int d[]);

int color(int tar){
	int t = tryCombination(c);
	if(t==-1||t>tar)return 0;
	return 1;
}

void dnc(int le, int ri, int C, int tar){
	if(le==ri){
		d[le]=tar;
		vis[le]=1;
		c[le]=C;
		return;
	}
	int mid=(le+ri)/2;
	memset(s,0,sizeof(s));
	for(int i=0; i<n; i++){
		if(le<=i&&i<=mid)
			s[i]=C;
		else 
			s[i]=1^C;
	}
	for(int i=0; i<n; i++)
		if(vis[i])s[i]=c[i];
	int t = tryCombination(s);
	if(t>tar||t==-1){
		dnc(le,mid,C,tar);
	}else{
		dnc(mid+1,ri,C,tar);
	}
}

void exploreCave(int n){
	for(int i=0; i<n; i++){
		int C = color(i);
		dnc(0,n-1,C,i);
	}
	answer(s,d);
}
/*
int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	int n; cin>>n;
	exploreCave(n);
	return 0;
}
*/ 

#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...