Submission #1203975

#TimeUsernameProblemLanguageResultExecution timeMemory
1203975ezzzayKlasika (COCI20_klasika)C++20
33 / 110
228 ms27428 KiB
#include<bits/stdc++.h> using namespace std; #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx,avx2") #define ff first #define ss second #define pb push_back const int N=1e7+5; int trie[N][2],cnt=0,fr[N],end[N], vertex=1; void add(int x){ int node=0; for(int i=30;i>=0;i--){ bool b=(1<<i) & x; if(trie[node][b]==0){ trie[node][b]= ++cnt; } node=trie[node][b]; fr[node]++; } } int find(int x){ int node=0; int ans=0; for(int i=30;i>=0;i--){ bool b=(1<<i) & x; b^=1; if(trie[node][b] and fr[trie[node][b]]){ ans+= (1<<i); node=trie[node][b]; } else{ node=trie[node][b^1]; } } return ans; } int dst[N]; signed main(){ int q; cin>>q; add(0); while(q--){ string t; cin>>t; if(t=="Add"){ int x,y; cin>>x>>y; dst[++vertex]=dst[x]^y; add(dst[vertex]); } else{ int a,b; cin>>a>>b; cout<<find(dst[a])<<endl; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...