답안 #889395

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
889395 2023-12-19T15:50:26 Z Alish Klasika (COCI20_klasika) C++17
33 / 110
3599 ms 524288 KB
#include <bits/stdc++.h>

using namespace std;

typedef long long int	ll;
typedef pair<int, int>	pii;
typedef pair<ll, ll>	pll;


#define F		        first
#define S		        second
#define pb		        push_back
#define endl            '\n'
#define Mp		        make_pair
#define all(x)          x.begin(), x.end()
#define debug(x)        cerr << #x << " = " << x << endl;
#define fast_io         ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define file_io         freopen("in.txt" , "r" , stdin) ; freopen("out.txt" , "w" , stdout);


ll mod = 1e9+7 ;

const int N = 2e5+23, L=31;

const int M = 185e4+23;


ll h[N];
int ch[M][2];
set<int> ss[M];
int st[N], ft[N], tim=0;
vector<int> g[N];
vector<pair<int, pii> > Q;
int cnt=1;
int tr;

void dfs(int v){
    st[v]=tim++;
    for (int u: g[v]) dfs(u);
    ft[v]=tim;
}

void add(int x, int pp){
    int cur=0;
    for (int i=L-1; i>=0; i--){
        int t=(x>>i&1);
        if(!ch[cur][t]) ch[cur][t]=++tr;
        cur=ch[cur][t];
        ss[cur].insert(pp);
    }
}

int get(int x, int v){
    int cur=0;
    int ans=0;
    for (int i=L-1; i>=0; i--){
        int t=(x>>i&1);
        t=1-t;
        if(ch[cur][t]){
            auto x=ss[ch[cur][t]].lower_bound(st[v]);

            if(x==ss[ch[cur][t]].end() || *x>=ft[v]){
                cur=ch[cur][1-t];
            }
            else{
                ans+=(1<<i);
                cur=ch[cur][t];
            }
        }
        else{
            cur=ch[cur][1-t];
        }
    }
    return ans;
}

int main()
{
    fast_io
    int q; cin>>q;
    for (int i=0; i<q; i++){
        string s; cin>>s;
        if(s=="Add"){
             ll u, w;
            cin>>u>>w;
            cnt++;
            h[cnt]=h[u]^w;
            g[u].pb(cnt);
            Q.pb({0, {cnt, u}});
        }
        else{
                int u, v; cin>>v>>u;
            Q.pb({1, {v, u}});
        }
    }
    dfs(1);
    add(0, st[1]);

    for (auto pp: Q){
        int t=pp.F, v=pp.S.F, u=pp.S.S;
        if(!t){
            add(h[v], st[v]);
        }
        else{
            cout<<get(h[v], u)<<endl;
        }
    }

}
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 95060 KB Output is correct
2 Correct 18 ms 95068 KB Output is correct
3 Correct 19 ms 95064 KB Output is correct
4 Correct 19 ms 95064 KB Output is correct
5 Correct 18 ms 95068 KB Output is correct
6 Correct 19 ms 95068 KB Output is correct
7 Correct 18 ms 95068 KB Output is correct
8 Correct 19 ms 95068 KB Output is correct
9 Correct 21 ms 95068 KB Output is correct
10 Correct 21 ms 95168 KB Output is correct
11 Correct 19 ms 95068 KB Output is correct
12 Correct 19 ms 95068 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 95060 KB Output is correct
2 Correct 18 ms 95068 KB Output is correct
3 Correct 19 ms 95064 KB Output is correct
4 Correct 19 ms 95064 KB Output is correct
5 Correct 18 ms 95068 KB Output is correct
6 Correct 19 ms 95068 KB Output is correct
7 Correct 18 ms 95068 KB Output is correct
8 Correct 19 ms 95068 KB Output is correct
9 Correct 21 ms 95068 KB Output is correct
10 Correct 21 ms 95168 KB Output is correct
11 Correct 19 ms 95068 KB Output is correct
12 Correct 19 ms 95068 KB Output is correct
13 Correct 21 ms 95580 KB Output is correct
14 Correct 22 ms 96260 KB Output is correct
15 Correct 23 ms 96848 KB Output is correct
16 Correct 22 ms 97372 KB Output is correct
17 Correct 21 ms 95576 KB Output is correct
18 Correct 22 ms 96088 KB Output is correct
19 Correct 22 ms 96856 KB Output is correct
20 Correct 23 ms 97372 KB Output is correct
21 Correct 21 ms 95580 KB Output is correct
22 Correct 22 ms 96084 KB Output is correct
23 Correct 22 ms 96860 KB Output is correct
24 Correct 24 ms 97260 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 529 ms 163420 KB Output is correct
2 Correct 1024 ms 229008 KB Output is correct
3 Correct 1364 ms 292140 KB Output is correct
4 Runtime error 3599 ms 524288 KB Execution killed with signal 9
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 95060 KB Output is correct
2 Correct 18 ms 95068 KB Output is correct
3 Correct 19 ms 95064 KB Output is correct
4 Correct 19 ms 95064 KB Output is correct
5 Correct 18 ms 95068 KB Output is correct
6 Correct 19 ms 95068 KB Output is correct
7 Correct 18 ms 95068 KB Output is correct
8 Correct 19 ms 95068 KB Output is correct
9 Correct 21 ms 95068 KB Output is correct
10 Correct 21 ms 95168 KB Output is correct
11 Correct 19 ms 95068 KB Output is correct
12 Correct 19 ms 95068 KB Output is correct
13 Correct 21 ms 95580 KB Output is correct
14 Correct 22 ms 96260 KB Output is correct
15 Correct 23 ms 96848 KB Output is correct
16 Correct 22 ms 97372 KB Output is correct
17 Correct 21 ms 95576 KB Output is correct
18 Correct 22 ms 96088 KB Output is correct
19 Correct 22 ms 96856 KB Output is correct
20 Correct 23 ms 97372 KB Output is correct
21 Correct 21 ms 95580 KB Output is correct
22 Correct 22 ms 96084 KB Output is correct
23 Correct 22 ms 96860 KB Output is correct
24 Correct 24 ms 97260 KB Output is correct
25 Correct 529 ms 163420 KB Output is correct
26 Correct 1024 ms 229008 KB Output is correct
27 Correct 1364 ms 292140 KB Output is correct
28 Runtime error 3599 ms 524288 KB Execution killed with signal 9
29 Halted 0 ms 0 KB -