Submission #1309378

#TimeUsernameProblemLanguageResultExecution timeMemory
1309378moondarksideXoractive (IZhO19_xoractive)C++20
0 / 100
1 ms332 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;
	set<int> Seen;
	vector<map<int,bool>> Posibilities(10);
	
	int vo=ask(0);
	
	for(int bit=0;bit<7;bit++){
	    
	    vector<int> Question;
	    
	    for(int i=1;i<n;i++){
	        if((i & 1<<bit )== 1 ){
	            Question.push_back(i);
	        }
	    }
	    
	    vector<int> Answer=get_pairwise_xor(Question);
	    Question.push_back(0);
	    vector<int> AnswerS=get_pairwise_xor(Question);
	    vector<int> Valid;
	    int j=0;
	    for(int i=0;i<Answer.size();i++){
	        if(AnswerS[j]==Answer[i]){
	            j++;
	        }
	        else{
	            if(AnswerS[j]!=0){
	                Valid.push_back(AnswerS[j]);
	            }
	            j+=2;
	        }
	    }
	    
	    
	    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...