#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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |