제출 #379342

#제출 시각아이디문제언어결과실행 시간메모리
379342pavement동굴 (IOI13_cave)C++17
100 / 100
371 ms756 KiB
#include "cave.h"
#include <bits/stdc++.h>
using namespace std;

int A[5005], B[5005], C[5005];
bool F[5005];
vector<int> V;

// yeet
void exploreCave(int N) {
	for (int i = 0; i < N; i++) V.push_back(i);
	for (int i = 0; i < N; i++) {
		int lo = 0, hi = V.size() - 1;
		bool st = tryCombination(A) == i;
		while (lo < hi) {
			int mid = (lo + hi) / 2;
			for (int i = lo; i <= mid; i++)
				A[V[i]] = !A[V[i]];
			bool nst = tryCombination(A) == i;
			if (nst != st) st = nst, hi = mid;
			else lo = mid + 1;
		}
		if (st) C[V[lo]] = A[V[lo]];
		else C[V[lo]] = !A[V[lo]];
		A[V[lo]] = !C[V[lo]];
		B[V[lo]] = i;
		F[V[lo]] = 1;
		V.clear();
		for (int i = 0; i < N; i++)
			if (!F[i]) V.push_back(i);
	}
	answer(A, B);
}
// yeet
#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...