Submission #922355

#TimeUsernameProblemLanguageResultExecution timeMemory
922355Shayan86Klasika (COCI20_klasika)C++14
110 / 110
2853 ms414532 KiB
#include <bits/stdc++.h> using namespace std; #pragma GCC optimize("O3,unroll-loops") // #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") // Ofast, O0, O1, O2, O3, unroll-loops, fast-math, trapv typedef long long ll; typedef pair<ll, ll> pll; typedef pair<int, int> pii; #define Mp make_pair #define sep ' ' #define endl '\n' #define F first #define S second #define pb push_back #define all(x) (x).begin(),(x).end() #define kill(res) cout << res << '\n', exit(0); #define set_dec(x) cout << fixed << setprecision(x); #define fast_io ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define file_io freopen("input.txt", "r", stdin) ; freopen("output.txt", "w", stdout); mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const ll L = 31; const ll N = 2e5 + 50; const ll M = 3e6 + 50; const ll Mod = 1e9 + 7; int n, q, sum[N], st[N], ft[N], timer = 1; vector<int> adj[N]; vector<pair<char, pii>> qu; void dfs(int v){ st[v] = timer++; for(int u: adj[v]) dfs(u); ft[v] = timer; } int trieInd = 1, child[M][2]; set<int> idx[M]; void add(int x){ int cur = 0; for(int i = L-1; i >= 0; i--){ int th = sum[x] >> i & 1; if(!child[cur][th]) child[cur][th] = trieInd++; cur = child[cur][th]; idx[cur].insert(st[x]); } } bool ok(int l, int r, int id){ auto y = idx[id].lower_bound(l); return (y != idx[id].end() && (*y) < r); } int get(int x, int l, int r){ int cur = 0, ans = 0; for(int i = L-1; i >= 0; i--){ int th = x >> i & 1; if(child[cur][1-th] && ok(l, r, child[cur][1-th])){ ans += (1 << i); cur = child[cur][1-th]; } else cur = child[cur][th]; } return ans; } int main(){ fast_io; cin >> q; n = 1; for(int i = 1; i <= q; i++){ string t; int a, b; cin >> t >> a >> b; if(t[0] == 'A'){ adj[a].pb(++n); sum[n] = sum[a] ^ b; } qu.pb({t[0], {a, b}}); } dfs(1); int m = 1; add(1); for(auto [t, e]: qu){ int a = e.F, b = e.S; if(t == 'A') add(++m); else cout << get(sum[a], st[b], ft[b]) << endl; } }

Compilation message (stderr)

klasika.cpp: In function 'int main()':
klasika.cpp:92:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   92 |     for(auto [t, e]: qu){
      |              ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...