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