제출 #1334079

#제출 시각아이디문제언어결과실행 시간메모리
1334079boclobanchatXoractive (IZhO19_xoractive)C++20
0 / 100
3 ms580 KiB
#include<bits/stdc++.h>
#include"interactive.h"
using namespace std;
set<int> st[67],vv;
vector<int> getval(vector<int> vi,int n,int x)
{
	vector<int> via=vi,vib=vi;
	via.push_back(n);
	via=get_pairwise_xor(via),vib=get_pairwise_xor(vib);
	multiset<int> val;
	for(auto v:via) val.insert(v);
	for(auto v:vib) val.erase(val.lower_bound(v));
	val.erase(val.lower_bound(0));
	vector<int> ans;
	for(int i=0;i<vi.size();i++)
	{
		int res=(*val.begin());
		val.erase(val.lower_bound(res));
		val.erase(val.lower_bound(res));
		ans.push_back(res^x);
	}
	return ans;
}
vector<int> guess(int n)
{
	vector<int> ans(n);
	ans[n-1]=ask(n);
	for(int i=0;(1<<i)<n;i++)
	{
		vector<int> idx;
		for(int j=1;j<n;j++) if(j&(1<<i)) idx.push_back(j);
		vector<int> val=getval(idx,n,ans[n-1]);
		for(auto v:val) st[i].insert(v),vv.insert(v);
	}
	for(auto v:vv)
	{
		int mask=0;
		for(int i=0;(1<<i)<n;i++) if(st[i].lower_bound(v)!=st[i].end()) mask|=(1<<i);
		ans[mask-1]=v;
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...