제출 #1244700

#제출 시각아이디문제언어결과실행 시간메모리
1244700NurislamCave (IOI13_cave)C++20
0 / 100
155 ms552 KiB

#include <bits/stdc++.h>
#include "cave.h"

using namespace std;

void exploreCave(int n) {
	int a[n], us[n];
	int ans1[n], ans2[n];
	
	for(int i = 0; i < n; i ++ ){
		a[i] = 0; ans1[i] = 0; ans2[i] = 0;
	};
	
	auto fp = [&](int l, int r) {
		for(int i = l; i <= r; i ++ ) {
			if(us[i])continue;
			a[i] ^= 1;
		};
	};
	int t = 0;
	function< void(int,int)> f = [&](int l, int r) {
		
		if(l == r) {
			ans1[l] = a[l];
			us[l] = 1;
			ans2[l] = t++;
			return;
		};
		int m = (l + r) >> 1;
		
		fp(l, m);
		//for(int i : a) cout << i << ' ';
		//cout << l << ' ' << r << '\n';
		//cout << tryCombination(a) << '\n';
		
		if(tryCombination(a) == t) {
			fp(l,m);
			f(l, m);
			return;
		};
		fp(l, m);
		f(m+1, r);
	};
	
	
	for(int i = 0; i < n; i ++ ) {
		int x = tryCombination(a);
		if(x == i) fp(0,n-1);
		
		f(0, n-1);
	};
	
	//for(int i : ans1) cout << i << ' ';
	//cout << '\n';
	//for(int i : ans2) cout << i << ' ';
	//cout << '\n';
	
	answer(ans1, ans2);
}
#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...