| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1282180 | vache_kocharyan | Klasika (COCI20_klasika) | C++20 | 0 ms | 0 KiB |
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
#include <random>
#include <chrono>
#include <unordered_set>
using namespace std;
typedef long long ll;
#define UNIQUE_SORT(vec) do { \
sort((vec).begin(), (vec).end()); \
(vec).erase(unique((vec).begin(), (vec).end()), (vec).end()); \
} while(0)
#define yes cout << "YES" << endl
#define no cout << "NO" << endl
#define MIN(v) *min_element(all(v))
#define MAX(v) *max_element(all(v))
#define LB(c, x) distance((c).begin(), lower_bound(all(c), (x)))
#define UB(c, x) distance((c).begin(), upper_bound(all(c), (x)))
#define ss second
#define ff first
#define all(X) X.begin(), X.end()
#define rall(X) X.rbegin(), X.rend()
#define cinall(X) for(auto &i:X)cin >> i
#define printall(X) for(auto &i:X)cout << i
const int N = 2e5 + 5;
struct Trie {
int g[30 * N2][2], cnt[30 * N2], root = 1, new_g = 1;
void add(int x)
{
int cur_node = root;
for (int i = 30; i >= 0; i--)
{
int bit = (x >> i) & 1;
if (g[cur_node][bit] == 0)
{
g[cur_node][bit] = ++new_g;
}
cur_node = g[cur_node][bit];
cnt[cur_node]++;
}
}
void del(int x)
{
int cur_node = root;
for (int i = 30; i >= 0; i--)
{
int bit = (x >> i) & 1;
cur_node = g[cur_node][bit];
cnt[cur_node]--;
}
}
int query(long long x)
{
int cur_node = root, ans = 0;
for (int i = 30; i >= 0; i--)
{
int bit = (x >> i) & 1;
if (g[cur_node][1 - bit] && cnt[g[cur_node][1 - bit]])
{
ans += (1 << i);
cur_node = g[cur_node][1 - bit];
}
else
{
cur_node = g[cur_node][bit];
}
}
return ans;
}
}trie;
vector<pair<int, int>>G[N];
int par[N];
int xxor[N];
void solve()
{
trie.add(0);
int q;
cin >> q;
int cnt = 1;
while (q--)
{
string s;
cin >> s;
if (s == "Add")
{
int x;
long long y;
cin >> x >> y;
cnt++;
G[x].push_back({ cnt, y });
G[cnt].push_back({ x, y });
par[cnt] = x;
xxor[cnt] = xxor[x] ^ y;
}
else
{
int a, b;
cin >> a >> b;
cout << trie.query(xxor[a]) << endl;
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
cin >> t;
while (t--)
{
solve();
cout << endl;
}
return 0;
}
