Submission #1175479

#TimeUsernameProblemLanguageResultExecution timeMemory
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...