Submission #1309403

#TimeUsernameProblemLanguageResultExecution timeMemory
1309403moondarksideXoractive (IZhO19_xoractive)C++20
100 / 100
3 ms460 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); if(n<=4){ for(int i=0;i<n;i++){ ans[i]=ask(i+1); } return ans; } 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...