# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1210484 | perekopskad | Xoractive (IZhO19_xoractive) | C++20 | 0 ms | 0 KiB |
#include "lib.h"
#include <bits/stdc++.h>
using namespace std;
vector <int> guess(int n) {
vector <int> ans(n);
ans[0] = ask(1);
map <int, int> pos;
for(int b = 0; (1 << b) < n; b++) {
vector <int> v;
for(int i = 0; i < n; i++)
if((i >> b & 1))
v.push_back(i + 1);
vector <int> r1 = get_pairwise_xor(v);
v.push_back(1);
vector <int> r2 = get_pairwise_xor(v);
map <int, int> mp;
for(int i : r2)
mp[i]++;
for(int i : r1)
mp[i]--;
for(auto i : mp) {
if(!i.second) continue;
int val = i.first ^ ans[0];
pos[val] += (1 << b);
}
}
for(auto i : pos)
ans[i.second] = i.first;
return ans;
}