Submission #486454

#TimeUsernameProblemLanguageResultExecution timeMemory
486454glomeCave (IOI13_cave)C++17
100 / 100
873 ms456 KiB
#include "cave.h"
#include<bits/stdc++.h>
 
using namespace std;
void exploreCave(int N) {
	int what[N];
	int where[N];
	bool ok[N];
	for (int i = 0; i<N; i++) {
		ok[i] = 0;
		what[i] = 0;
	}
	for (int i = 0; i<N; i++) {	
		int now = 0;
		int k = tryCombination(what);
		k = (k == -1 ? N : k);
		if(k == i) {
			now = 1;
		}
		int l = 0, r = N - 1;
		int pos;
		while(l < r) {
			int l1 = l, r1 = l + (r - l) / 2;
			int l2 = l + (r - l) / 2 + 1, r2 = r;
			int temp[N];
			for (int j = 0; j<N; j++) {
				if(ok[j]) {
					temp[j] = what[j];
					continue;
				}
				if(j >= l2 && j <= r2) {
					temp[j] = now;
				}
				else {
					temp[j] = now ^ 1;
				}
			}
			int o = tryCombination(temp);
			if(o == i) {
				l = l1, r = r1;
			}
			else {
				l = l2, r = r2;
			}
		}
		pos = r;
		ok[pos] = 1;
		what[pos] = now;
		where[pos] = i;
	}
	answer(what, where);
}
#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...