# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
872652 | 2023-11-13T13:41:25 Z | vjudge1 | Klasika (COCI20_klasika) | C++17 | 60 ms | 40632 KB |
#include<bits/stdc++.h> #ifdef LOCAL #include "Essentials/algo/debug.h" #else #define debug(...) 69 #endif using namespace std; typedef long long ll; typedef pair<int,int> pii; const int N = 2e5 + 23; const int LOG = 30; const ll inf = 1e18; #define F first #define S second #define pb push_back #define kill(x) cout<<x<<endl, exit(0); #define all(x) x.begin(),x.end() #define sz(x) (int)x.size() #define lc (v << 1) #define rc ((v<<1) |1) int st[N],ft[N]; int timer =1; vector<int> G[N]; void dfsset(int v) { st[v] = timer ++; for(int u : G[v]) dfsset(u); ft[v] = timer-1; } struct node { node* ch[2]; set<int> s; node() { ch[0] = ch[1] = nullptr; } }root; int val[N]; void add(int v) { int x = val[v]; node* cur = &root; for(int i = LOG-1; i >= 0 ; i --) { int p = (x >> i)&1; if(cur->ch[p] == nullptr) { cur->ch[p] = new node(); } cur = cur->ch[p]; cur->s.insert(st[v]); } } int get(int v,int x) { node* cur = &root; int ans=0; for(int i = LOG-1; i >= 0 ; i --) { int p = (x >> i)&1; p ^= 1; if(cur->ch[p] != nullptr) { auto itr = cur->ch[p]->s.lower_bound(st[v]); debug(v,st[v],ft[v], cur->ch[p]->s,*itr); if(itr != cur->ch[p]->s.end() && (*itr) <= ft[v]) { cur = cur->ch[p]; ans |= (1 << i); } else { p ^= 1; cur = cur->ch[p]; } } else { p ^= 1; cur = cur->ch[p]; } } return ans; } int q; vector<pair<string,pii>> que; int32_t main() { cin.tie(nullptr)->sync_with_stdio(false); cin>>q; int n = 1; for(int i = 0 ;i < q; i++) { string s; int a,b; cin>>s>>a>>b; if(s == "Add") { G[a].pb(++n); val[n] = val[a] ^ b; } que.pb({s,{a,b}}); } dfsset(1); n = 1; debug(que); for(auto [s,qq] : que) { auto [a,b] = qq; if(s == "Add") { add(++n); } else { cout<<get(b,val[a]) << '\n'; } } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 7 ms | 13148 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 7 ms | 13148 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 60 ms | 40632 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 7 ms | 13148 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |