Submission #1267226

#TimeUsernameProblemLanguageResultExecution timeMemory
1267226cmiucCave (IOI13_cave)C++20
100 / 100
159 ms552 KiB
#include <iostream>
#include "cave.h"

using namespace std;
int Ans[5005], D[5005], S[5005], fxd[5005];

int ask(){
	int ans = tryCombination(S);
	if (ans == -1)
		ans = 5005;
	return ans;
}

void exploreCave(int n){

	for (int i=0;i<n;i++){
		int k = ask();

		int l = 0, r = n;
		while (l + 1 < r){
			int mid = (l + r) / 2;
			for (int j=l;j<mid;j++){
				if (!fxd[j])
					S[j] ^= 1;
			}
			int kk = ask();
			
			for (int j=l;j<mid;j++){
				if (!fxd[j])
					S[j] ^= 1;
			}
			
			if (k > i and kk > i)
				l = mid;
			else if (k > i)
				r = mid;
			else if (k == i and kk == i)
				l = mid;
			else
				r = mid;
		}
		D[l] = i;
		if (k == i)
			S[l] ^= 1;
		Ans[l] = S[l];
		fxd[l] = 1;
	}
	answer(Ans, D);
}
#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...