답안 #857108

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
857108 2023-10-05T11:35:55 Z Jethro Klasika (COCI20_klasika) C++17
33 / 110
146 ms 122704 KB
//Writed by: Jethro_
//----------------------
#include <bits/stdc++.h>
using namespace std;

#define fi first
#define se second

const int N = 2e5 + 10;
int n, node = 1, i, root, val, in[N], out[N], cnt = 0, Xor[N], LG = 31, child[N * 10][2], cnt2 = 0;
vector<pair<int, int>> a[N];
set<int> save[N];
pair<int, int> query[N];
string type[N];

void add() {
    cin >> n;
    for(i = 1; i <= n; ++i) {
        cin >> type[i];
        if(type[i] == "Add") {
            cin >> root >> val;
            a[++node].push_back({root, val});
            a[root].push_back({node, val});
            
            query[i] = {node, node};
            
        }else {
            cin >> root >> val;
            query[i] = {root, val};
        }
    }
}
void dfs(int u, int p) {
    in[u] = ++cnt;
    for(auto [v, w] : a[u]) {
        if(v == p) continue;
        Xor[v] = Xor[u] ^ w;
        dfs(v, u);
    }

    out[u] = cnt;
}
void ADD(int s, int id) {
    int u = 0;

    for(int i = LG; i >= 0; --i) {
        int k = (s >> i) & 1;
        if(child[u][k] == -1) {
            child[u][k] = ++cnt2;
        }
        u = child[u][k];
        save[u].insert(in[id]);
    }
}
void get(int s, int l, int r) {
    int u = 0, res = 0;
    for(int i = LG; i >= 0; --i) {
        int k = (s >> i) & 1, t = child[u][k ^ 1];
        if(t != -1){
            auto x = save[t].lower_bound(l);
            if(x != save[t].end() && (*x) <= r) {
                u = t;
                res += (1 << i);
            }else {
               u = child[u][k];
            }
        }else {
            u = child[u][k];
        }
    }
    cout << res << '\n';
}
void solve() {

    memset(child, -1, sizeof child);
    dfs(1, 0);
    ADD(0, 1);
    
    for(i = 1; i <= n; ++i) {
        auto [x, y] = query[i];
        if(type[i] == "Add") {
            ADD(Xor[x], y);
        }else {
            int now = Xor[x];
            get(now, in[y], out[y]);
        }
    }
}
int main() {

    cin.tie(NULL);
    ios_base::sync_with_stdio(false);
    add();
    solve();

}
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 39512 KB Output is correct
2 Correct 7 ms 39516 KB Output is correct
3 Correct 7 ms 39628 KB Output is correct
4 Correct 8 ms 40024 KB Output is correct
5 Correct 7 ms 39516 KB Output is correct
6 Correct 7 ms 39516 KB Output is correct
7 Correct 7 ms 39772 KB Output is correct
8 Correct 8 ms 39772 KB Output is correct
9 Correct 7 ms 39696 KB Output is correct
10 Correct 7 ms 39516 KB Output is correct
11 Correct 7 ms 39620 KB Output is correct
12 Correct 7 ms 39772 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 39512 KB Output is correct
2 Correct 7 ms 39516 KB Output is correct
3 Correct 7 ms 39628 KB Output is correct
4 Correct 8 ms 40024 KB Output is correct
5 Correct 7 ms 39516 KB Output is correct
6 Correct 7 ms 39516 KB Output is correct
7 Correct 7 ms 39772 KB Output is correct
8 Correct 8 ms 39772 KB Output is correct
9 Correct 7 ms 39696 KB Output is correct
10 Correct 7 ms 39516 KB Output is correct
11 Correct 7 ms 39620 KB Output is correct
12 Correct 7 ms 39772 KB Output is correct
13 Correct 9 ms 40284 KB Output is correct
14 Correct 9 ms 40924 KB Output is correct
15 Correct 12 ms 41564 KB Output is correct
16 Correct 11 ms 42076 KB Output is correct
17 Correct 10 ms 40112 KB Output is correct
18 Correct 10 ms 40668 KB Output is correct
19 Correct 11 ms 41392 KB Output is correct
20 Correct 12 ms 42076 KB Output is correct
21 Correct 9 ms 40028 KB Output is correct
22 Correct 10 ms 40672 KB Output is correct
23 Correct 11 ms 41308 KB Output is correct
24 Correct 12 ms 42084 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 146 ms 122704 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 39512 KB Output is correct
2 Correct 7 ms 39516 KB Output is correct
3 Correct 7 ms 39628 KB Output is correct
4 Correct 8 ms 40024 KB Output is correct
5 Correct 7 ms 39516 KB Output is correct
6 Correct 7 ms 39516 KB Output is correct
7 Correct 7 ms 39772 KB Output is correct
8 Correct 8 ms 39772 KB Output is correct
9 Correct 7 ms 39696 KB Output is correct
10 Correct 7 ms 39516 KB Output is correct
11 Correct 7 ms 39620 KB Output is correct
12 Correct 7 ms 39772 KB Output is correct
13 Correct 9 ms 40284 KB Output is correct
14 Correct 9 ms 40924 KB Output is correct
15 Correct 12 ms 41564 KB Output is correct
16 Correct 11 ms 42076 KB Output is correct
17 Correct 10 ms 40112 KB Output is correct
18 Correct 10 ms 40668 KB Output is correct
19 Correct 11 ms 41392 KB Output is correct
20 Correct 12 ms 42076 KB Output is correct
21 Correct 9 ms 40028 KB Output is correct
22 Correct 10 ms 40672 KB Output is correct
23 Correct 11 ms 41308 KB Output is correct
24 Correct 12 ms 42084 KB Output is correct
25 Runtime error 146 ms 122704 KB Execution killed with signal 11
26 Halted 0 ms 0 KB -