# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
872662 | vjudge1 | Klasika (COCI20_klasika) | C++17 | 1992 ms | 428140 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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++;
}
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);
add(1);
for(auto [s,qq] : que) {
auto [a,b] = qq;
if(s == "Add") {
add(++n);
} else {
cout<<get(b,val[a]) << '\n';
}
}
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |