제출 #1175479

#제출 시각아이디문제언어결과실행 시간메모리
1175479adkjtXoractive (IZhO19_xoractive)C++20
0 / 100
3 ms792 KiB
#include "interactive.h" #include<bits/stdc++.h> using namespace std; set<int> s; vector<int> as[11]; vector<int> all; vector<int> notall; set<int> as2[11]; int xorrev(int now,int ans,int idx) { int b=0; while(idx>0) { if((now&idx)!=(ans&idx)) b+=idx; //cout<<now<<' '<<ans<<' '<<idx<<' '<<b<<'\n'; idx=idx>>1; } return b; } vector<int> guess(int n) { vector <int> ans(n,0); int st=ask(1); for(int i=1;i<=n;i++) all.push_back(i); all=get_pairwise_xor(all); for(auto x:all) s.insert(x); for(int i=2;i<=n;i++) notall.push_back(i); notall=get_pairwise_xor(notall); for(auto x:notall) s.erase(x); /*cout<<"SET "; for(auto it=s.begin();it!=s.end();it++) cout<<*it<<' '; cout<<'\n';*/ all.clear(); all.push_back(st); for(auto it=s.begin();it!=s.end();it++) { all.push_back(xorrev(st,*it,1<<8)); } //cout<<"W"; /*for(auto x:all) cout<<x<<' '; cout<<'\n';*/ for(int i=1;i<n;i++) { for(int k=0;k<=8;k++) { if(all[i]&(1<<k)) as[k].push_back(i+1);//,cout<<all[i]<<'\n'; } } for(int i=0;i<=8;i++) { as[i].push_back(1); /*for(auto x:as[i]) cout<<x; cout<<'\n';*/ //cout<<i<<'\n'; as[i]=get_pairwise_xor(as[i]); /*for(auto x:as[i]) cout<<x; cout<<'\n'; cout<<'\n';*/ } //cout<<"W"; for(int i=0;i<=8;i++) { for(auto x:as[i]) { if(s.find(x)!=s.end()) as2[i].insert(xorrev(st,x,1<<8));//,cout<<x<<' '<<i<<'\n'; } // cout<<'\n'; } //cout<<"X"; //ans.push_back(st); ans[0]=st; for(auto x:all) { int b=0; //cout<<x<<'\n'; for(int k=1;k<=8;k++) { if(as2[k].find(x)!=as2[k].end()) b+=(1<<(k-1)); //cout<<b<<' '; } //cout<<'\n'; ans[b]=x; } //cout<<"Y"; //for(int i=0;i<n;i++) cout<<ans[i]<<' '; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...