Submission #896815

#TimeUsernameProblemLanguageResultExecution timeMemory
896815starchanXoractive (IZhO19_xoractive)C++17
100 / 100
4 ms596 KiB
#include "interactive.h"
#include<bits/stdc++.h>
using namespace std;
#define in pair<int, int>
#define f first
#define s second
#define pb push_back
#define pob pop_back
#define INF (int)1e17
#define MX (int)3e5+5
#define fast() ios_base::sync_with_stdio(false); cin.tie(NULL)
/*int ask(int i)
{
	cout << "What is the value of a[" << i << "]: " << endl;
	int ret;
	cin >> ret;
	return ret;
}
vector<int> get_pairwise_xor(vector<int> pos)
{
	cout << "Enter the pairwise xors of following indices: ";
	for(int k: pos)
		cout << k << " ";
	cout << endl;
	int t = pos.size();
	vector<int> tt;
	for(int i = 1; i <= t*t; i++)
	{
		int ok;
		cin >> ok;
		tt.pb(ok);
	}
	return tt;
}*/
vector<int> perm(vector<int> pos)
{
	map<int, int> ok;
	pos.pb(1);
	vector<int> v1 = get_pairwise_xor(pos);
	for(int k: v1)
		ok[k]++;
	pos.pob();
	vector<int> v2 = get_pairwise_xor(pos);
	for(int k: v2)
	{
		ok[k]--;
		if(ok[k] == 0)
			ok.erase(k);
	}
	ok.erase(0);
	for(int k: v1)
	{
		if(ok.find(k) == ok.end())
			continue;
		ok[k]/=2;
	}
	vector<int> v;
	for(in kk: ok)
		v.pb(kk.f);
	return v;
}
vector<int> guess(int n)
{
	vector<int> v[8];
	int tt = ask(1);
	for(int i = 2; i <= n; i++)
	{
		for(int j = 0; j < 7; j++)
		{
			if((i>>j)&1ll)
				v[j].pb(i);
		}
	}
	map<int, int> position;
	position[0] = 1;
	for(int j = 0; j < 7; j++)
	{
		if(v[j].empty())
			continue;
		vector<int> ok = perm(v[j]);
		for(int t: ok)
			position[t]+=(1<<j);
	}
	vector<int> a(n);
	for(auto [v, w]: position)
		a[w-1] = v^tt;
	return a;
}
/*signed main()
{
	fast();
	int n;
	cin >> n;
	vector<int> v = guess(n);
	cout << "Seq found: " << endl;
	for(int t: v)
		cout << t << " ";
	return 0;
}*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...