Submission #208377

#TimeUsernameProblemLanguageResultExecution timeMemory
208377bensonlzlXoractive (IZhO19_xoractive)C++14
100 / 100
12 ms760 KiB
#include "interactive.h"
#include <bits/stdc++.h>

using namespace std;

vector<int> guess(int n) {
	vector<int> ans;
	multiset<int> diff[7], rep[7]; 
	set<int> s;
	ans.resize(n,-1);
	ans[0] = ask(1);
	for (int i = 0; i < 7; ++i){
		vector<int> x, y;
		x.push_back(1);
		for (int j = 2; j <= n; ++j){
			if (!(j & (1 << i))){
				x.push_back(j);
				y.push_back(j);
			} 
		}
		vector<int> xr = get_pairwise_xor(x), yr = get_pairwise_xor(y);
		for (auto it : xr){
			diff[i].insert(it);
		}
		for (auto it : yr){
			diff[i].erase(diff[i].find(it));
		}
		diff[i].erase(0);
		for (auto it : diff[i]){
			rep[i].insert(it ^ ans[0]);
		}
		for (auto it : rep[i]){
			s.insert(it);
		}
	}
	for (auto it : s){
		int num = (1 << 7) - 1;
		for (int i = 0; i < 7; ++i){
			if (rep[i].find(it) != rep[i].end()){
				num -= (1 << i);
			}
		}
		ans[num-1] = it;
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...