Submission #885132

#TimeUsernameProblemLanguageResultExecution timeMemory
885132huynhyen1609Klasika (COCI20_klasika)C++14
110 / 110
2486 ms423276 KiB
#include<bits/stdc++.h> using namespace std; #define fi first #define se second #define NAME "andteddy" //#define int long long #define ii pair<int,int> #define i(x) array<int,x> const int N=2e5; int q,n,pre[N+5],cnt,in[N+5],out[N+5]; vector<i(3)>vec; vector<ii>graph[N+5]; int getbit(int x,int i) { return (x>>i)&1; } void dfs(int u) { in[u]=++cnt; for(ii v:graph[u]) { pre[v.fi]=pre[u]^v.se; dfs(v.fi); } out[u]=cnt; } struct ta { int c[2]; set<int>s; }trie[3000000]; void add(int u) { int id=0; for(int i=30;i>=0;--i) { int tmp=getbit(pre[u],i); if(!trie[id].c[tmp])trie[id].c[tmp]=++cnt; id=trie[id].c[tmp]; trie[id].s.insert(in[u]); } } int get(int u,int v) { int id=0,res=pre[u]; for(int i=30;i>=0;--i) { int t=0; int tmp=getbit(pre[u],i); if(trie[id].c[tmp^1]) { int tm=trie[id].c[tmp^1]; int l=*trie[tm].s.lower_bound(in[v]); if(l>=in[v]&&l<=out[v]) { id=trie[id].c[tmp^1]; res^=(tmp^1)<<i; t=1; } } if(trie[id].c[tmp]&&t!=1) { int tm=trie[id].c[tmp]; int l=*trie[tm].s.lower_bound(in[v]); if(l>=in[v]&&l<=out[v]) { id=trie[id].c[tmp]; res^=tmp<<i; } } } return res; } main() { ios_base::sync_with_stdio(false); cin.tie(0),cout.tie(0); //freopen(""NAME".inp","r",stdin); //freopen(""NAME".out","w",stdout); cin>>q; n=1; for(int i=1;i<=q;++i) { string s; int u,v; cin>>s; cin>>u>>v; if(s=="Add") { vec.push_back({0,++n,0}); graph[u].push_back({n,v}); } else { vec.push_back({1,u,v}); } } dfs(1); cnt=0; add(1); for(i(3)x:vec) { if(!x[0])add(x[1]); else cout<<get(x[1],x[2])<<'\n'; } } /* ଘ(੭ˊᵕˋ)੭* ੈ✩‧˚huynhyen1609<3 */

Compilation message (stderr)

klasika.cpp:74:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   74 | main()
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...