Submission #1309400

#TimeUsernameProblemLanguageResultExecution timeMemory
1309400moondarksideXoractive (IZhO19_xoractive)C++20
94 / 100
3 ms464 KiB
#include<bits/stdc++.h>
#include "interactive.h"
using namespace std;

int ask(int position);
std::vector<int> get_pairwise_xor(std::vector<int> positions);

vector<int> guess(int n) {
	vector <int> ans(n);
	set<int> Seen;
	vector<map<int,bool>> Posibilities(10);

	int vo=ask(1);

	for(int bit=0; bit<7; bit++) {

		vector<int> Question;

		for(int i=1; i<n; i++) {
			if((i & (1<<bit) )== 1<<bit ) {
				Question.push_back(i+1);
			}
		}

		vector<int> Answer=get_pairwise_xor(Question);
		Question.push_back(1);
		vector<int> AnswerS=get_pairwise_xor(Question);
		vector<int> Valid;
		int j=0;
		
		for(int i=0; i<AnswerS.size(); i++) {
			if(j<Answer.size() && AnswerS[i]==Answer[j]) {
				j++;
			}
			else {
				if(AnswerS[i]!=0) {
					Valid.push_back(AnswerS[i]);
				}
			}
		}


		for(int i=0; i<Valid.size(); i++) {
			Seen.insert(Valid[i]^vo);
			Posibilities[bit][Valid[i]^vo]=true;
		}




	}

	for(int i:Seen) {
		int pos=0;
		for(int bit=0; bit<7; bit++) {
			if(Posibilities[bit][i]) {
				pos+=1<<bit;
			}
		}
		ans[pos]=i;

	}
	ans[0]=vo;
	return ans;
}


#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...