답안 #889387

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
889387 2023-12-19T15:40:41 Z Alish Klasika (COCI20_klasika) C++17
33 / 110
1173 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 = 7e6;


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 92 ms 337036 KB Output is correct
2 Correct 66 ms 337240 KB Output is correct
3 Correct 64 ms 337256 KB Output is correct
4 Correct 67 ms 337244 KB Output is correct
5 Correct 69 ms 337204 KB Output is correct
6 Correct 66 ms 337256 KB Output is correct
7 Correct 66 ms 337240 KB Output is correct
8 Correct 67 ms 337236 KB Output is correct
9 Correct 66 ms 337228 KB Output is correct
10 Correct 65 ms 337232 KB Output is correct
11 Correct 69 ms 337232 KB Output is correct
12 Correct 65 ms 337164 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 92 ms 337036 KB Output is correct
2 Correct 66 ms 337240 KB Output is correct
3 Correct 64 ms 337256 KB Output is correct
4 Correct 67 ms 337244 KB Output is correct
5 Correct 69 ms 337204 KB Output is correct
6 Correct 66 ms 337256 KB Output is correct
7 Correct 66 ms 337240 KB Output is correct
8 Correct 67 ms 337236 KB Output is correct
9 Correct 66 ms 337228 KB Output is correct
10 Correct 65 ms 337232 KB Output is correct
11 Correct 69 ms 337232 KB Output is correct
12 Correct 65 ms 337164 KB Output is correct
13 Correct 67 ms 337748 KB Output is correct
14 Correct 68 ms 338260 KB Output is correct
15 Correct 75 ms 339064 KB Output is correct
16 Correct 70 ms 339536 KB Output is correct
17 Correct 66 ms 337748 KB Output is correct
18 Correct 68 ms 338208 KB Output is correct
19 Correct 67 ms 338748 KB Output is correct
20 Correct 71 ms 339536 KB Output is correct
21 Correct 69 ms 337968 KB Output is correct
22 Correct 72 ms 338280 KB Output is correct
23 Correct 72 ms 338772 KB Output is correct
24 Correct 75 ms 339436 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 607 ms 405032 KB Output is correct
2 Correct 1006 ms 470084 KB Output is correct
3 Runtime error 1173 ms 524288 KB Execution killed with signal 9
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 92 ms 337036 KB Output is correct
2 Correct 66 ms 337240 KB Output is correct
3 Correct 64 ms 337256 KB Output is correct
4 Correct 67 ms 337244 KB Output is correct
5 Correct 69 ms 337204 KB Output is correct
6 Correct 66 ms 337256 KB Output is correct
7 Correct 66 ms 337240 KB Output is correct
8 Correct 67 ms 337236 KB Output is correct
9 Correct 66 ms 337228 KB Output is correct
10 Correct 65 ms 337232 KB Output is correct
11 Correct 69 ms 337232 KB Output is correct
12 Correct 65 ms 337164 KB Output is correct
13 Correct 67 ms 337748 KB Output is correct
14 Correct 68 ms 338260 KB Output is correct
15 Correct 75 ms 339064 KB Output is correct
16 Correct 70 ms 339536 KB Output is correct
17 Correct 66 ms 337748 KB Output is correct
18 Correct 68 ms 338208 KB Output is correct
19 Correct 67 ms 338748 KB Output is correct
20 Correct 71 ms 339536 KB Output is correct
21 Correct 69 ms 337968 KB Output is correct
22 Correct 72 ms 338280 KB Output is correct
23 Correct 72 ms 338772 KB Output is correct
24 Correct 75 ms 339436 KB Output is correct
25 Correct 607 ms 405032 KB Output is correct
26 Correct 1006 ms 470084 KB Output is correct
27 Runtime error 1173 ms 524288 KB Execution killed with signal 9
28 Halted 0 ms 0 KB -