# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1131147 | Tsagana | Xoractive (IZhO19_xoractive) | C++20 | 0 ms | 0 KiB |
#include<bits/stdc++.h>
#define all(x) x.begin(), x.end()
#define int long long
#define pq priority_queue
#define eb emplace_back
#define lb lower_bound
#define ub upper_bound
#define pb push_back
#define pp pop_back
#define F first
#define S second
using namespace std;
vector<int> guess (int n) {
vector<int> a(n);
a[0] = ask(1);
map<int, int> ans;
for (int i = 0; (1 << i) <= n; i++) {
vector<int> p;
for (int j = 2; j <= n; j++) if (j & (1 << i)) p.pb(j);
auto g1 = get_pairwise_xor(p); p.pb(1);
auto g2 = get_pairwise_xor(p);
map<int, int> mp;
for (auto x: g2) mp[x]++;
for (auto x: g1) mp[x]--;
for (auto x: mp) if (x.S) ans[x.F ^ a[0]] |= (1 << i);
}
for (auto x: ans) a[x.S - 1] = x.F;
return a;
}