Submission #1131973

#TimeUsernameProblemLanguageResultExecution timeMemory
1131973alexander707070Xoractive (IZhO19_xoractive)C++20
100 / 100
3 ms556 KiB
#include<bits/stdc++.h>
#define MAXN 107

#include "interactive.h"
using namespace std;

int n;
int p[MAXN];
vector<int> perm,all,ex1,xors[10],bits[10],ans;

unordered_set<int> s;
unordered_map<int,int> br;

vector<int> guess(int N) {

	n=N;
	p[1]=ask(1);

	for(int i=0;i<7;i++){
		for(int f=2;f<=n;f++){
			if(((1<<i)&f)>0)bits[i].push_back(f);
		}

		bits[i].push_back(1);
		if(bits[i].size()>=2){
			all=get_pairwise_xor(bits[i]);
			bits[i].pop_back();
			ex1=get_pairwise_xor(bits[i]);

			br.clear();

			for(int k:ex1)br[k]++;
			for(int k:all){
				br[k]--;
				if(br[k]<0){
					xors[i].push_back(k);
					s.insert(k);
				}
			}
		}
	}

	for(int i=2;i<=n;i++){
		br.clear();

		for(int f=0;f<7;f++){
			if(bits[f].empty())continue;

			if(((1<<f)&i)>0){
				for(int k:xors[f])br[k]++;
			}else{
				for(int k:xors[f])br[k]--;
			}
		}

		int maxs=0;
		for(int k:s){
			if(br[k]>br[maxs])maxs=k;
		}

		p[i]=p[1]^maxs;
	}

	for(int i=1;i<=n;i++)ans.push_back(p[i]);

	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...