9
vector<Node *> children;11
children.resize(2, NULL);24
void insert(int num) {26
for (int i = 18; i >= 0; i--) {27
bool bit = (num & (1 << i));28
if (!cur->children[bit]) cur->children[bit] = new Node();29
cur = cur->children[bit];34
void remove(int num) {36
for (int i = 18; i >= 0; i--) {37
bool bit = (num & (1 << i));38
cur = cur->children[bit];46
for (int i = 18; i >= 0; i--) {47
bool bit = (num & (1 << i));48
if (cur->children[!bit] && cur->children[!bit]->count > 0) {50
cur = cur->children[!bit];52
cur = cur->children[bit];60
vector<vector<pair<int, int>>> mp;64
void dfs(vector<int> gr[], int cur) {66
for (auto &child : mp[cur]) {67
res[child.second] = t->search(child.first);69
for (int &child : gr[cur]) {76
vector<int> maxGeneticDifference(vector<int> &parents, vector<vector<int>> &queries) {79
int n = parents.size();81
res.resize(queries.size());85
for (int i = 0; i < n; i++) {89
gr[parents[i]].push_back(i);92
for (int i = 0; i < queries.size(); i++) {93
mp[queries[i][0]].push_back({queries[i][1], i});