답안 #1094092

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1094092 2024-09-28T12:12:55 Z 0pt1mus23 Klasika (COCI20_klasika) C++14
33 / 110
173 ms 109272 KB
#include <bits/stdc++.h>
using namespace std;
#define needforspeed ios::sync_with_stdio(0);cin.tie(0);
#define int long long int
#define pb push_back
#define ins insert
#define endl '\n'
#define putr(x) cout<<x<<endl;return;
#define all(x) x.begin(),x.end()
#define _ << " " <<
const int mod = 1e9 +7,sze = 2*1e5 +23,inf = INT_MAX, L = 30; 
int T[sze][2];
set<int> fener[sze][2];
int tnod = 1;
int discover[sze];
int finish[sze];
vector<pair<int,int>> graph[sze];
 
void add(int node,int bit,int val,int gir){
    if(bit<0){
        return;
    }
    int x =0;
    if(val & (1<<bit)){
        x=1;
    }
    if(T[node][x]==0){
       T[node][x]= ( ++tnod);
    }
    // cout<<bit<<" added "<<val<<" "<<x<<endl;
    fener[node][x].ins(gir);
    add(T[node][x],bit-1,val,gir);
}
int timer =0;
int pref[sze];
void dfs(int node,int par,int px){
    discover[node]=++timer;
    pref[node]=px;
    for(auto v:graph[node]){
        if(v.first!=par){
            dfs(v.first,node,px ^ v.second);
        }
    }
    finish[node]=++timer;   
}
 
int qry(int node,int bit,int val,int l,int r){
    if(bit<0){
        return 0;
    }
    int lazim =1;
    if(val & (1<<bit)){
        lazim=0;
    }
    // cout<<bit<<" "<<val<<" "<<lazim<<" "<<T[node][lazim]<<endl;
    if(T[node][lazim] && fener[node][lazim].lower_bound(l) != fener[node][lazim].upper_bound(r)){
        return (1<<bit) + qry(T[node][lazim],bit-1,val,l,r);
    }
    else{
        return qry(T[node][1 - lazim],bit-1,val,l,r);
    }
}
void opt1z(){
    int q;
    cin>>q;
    int nodec =2;
    vector<pair<int, pair<int,int>>> queries;
    for(int i=0;i<q;i++){
        string op;cin>>op;
        int a,b;
        cin>>a>>b;
        if(op=="Add"){
            graph[a].pb({nodec,b});
            graph[nodec].pb({a,b});
            queries.pb({0,{nodec,b}});
            nodec++;
        }
        else{
            queries.pb({1,{a,b}});
        }
    }
    dfs(1,-1,0);
    add(1,L,0,discover[1]);
    // cout<<pref[2]<<endl;
    for(auto v:queries){
        auto [a,b] = v.second;
        if(v.first ==0){
            add(1,L,pref[a],discover[a]);
        }
        else{
            // cout<<"sa"<<endl;
            cout<<qry(1,L,pref[a],discover[b],finish[b])<<endl;
        }
    }
}
 
signed main() {
    needforspeed;
 
    int tt = 1;
    // cin>>tt;
    while(tt--){
        opt1z();
    }
 
    return 0;
}

Compilation message

klasika.cpp: In function 'void opt1z()':
klasika.cpp:86:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   86 |         auto [a,b] = v.second;
      |              ^
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 23896 KB Output is correct
2 Correct 11 ms 23900 KB Output is correct
3 Correct 11 ms 24156 KB Output is correct
4 Correct 10 ms 24156 KB Output is correct
5 Correct 10 ms 24068 KB Output is correct
6 Correct 11 ms 23900 KB Output is correct
7 Correct 11 ms 24156 KB Output is correct
8 Correct 11 ms 24156 KB Output is correct
9 Correct 11 ms 23896 KB Output is correct
10 Correct 13 ms 24156 KB Output is correct
11 Correct 11 ms 24036 KB Output is correct
12 Correct 11 ms 24152 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 23896 KB Output is correct
2 Correct 11 ms 23900 KB Output is correct
3 Correct 11 ms 24156 KB Output is correct
4 Correct 10 ms 24156 KB Output is correct
5 Correct 10 ms 24068 KB Output is correct
6 Correct 11 ms 23900 KB Output is correct
7 Correct 11 ms 24156 KB Output is correct
8 Correct 11 ms 24156 KB Output is correct
9 Correct 11 ms 23896 KB Output is correct
10 Correct 13 ms 24156 KB Output is correct
11 Correct 11 ms 24036 KB Output is correct
12 Correct 11 ms 24152 KB Output is correct
13 Correct 12 ms 24668 KB Output is correct
14 Correct 14 ms 25432 KB Output is correct
15 Correct 17 ms 26204 KB Output is correct
16 Correct 17 ms 26936 KB Output is correct
17 Correct 14 ms 24664 KB Output is correct
18 Correct 14 ms 25436 KB Output is correct
19 Correct 15 ms 26284 KB Output is correct
20 Correct 16 ms 26968 KB Output is correct
21 Correct 13 ms 24668 KB Output is correct
22 Correct 13 ms 25368 KB Output is correct
23 Correct 15 ms 26200 KB Output is correct
24 Correct 15 ms 26844 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 173 ms 109272 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 23896 KB Output is correct
2 Correct 11 ms 23900 KB Output is correct
3 Correct 11 ms 24156 KB Output is correct
4 Correct 10 ms 24156 KB Output is correct
5 Correct 10 ms 24068 KB Output is correct
6 Correct 11 ms 23900 KB Output is correct
7 Correct 11 ms 24156 KB Output is correct
8 Correct 11 ms 24156 KB Output is correct
9 Correct 11 ms 23896 KB Output is correct
10 Correct 13 ms 24156 KB Output is correct
11 Correct 11 ms 24036 KB Output is correct
12 Correct 11 ms 24152 KB Output is correct
13 Correct 12 ms 24668 KB Output is correct
14 Correct 14 ms 25432 KB Output is correct
15 Correct 17 ms 26204 KB Output is correct
16 Correct 17 ms 26936 KB Output is correct
17 Correct 14 ms 24664 KB Output is correct
18 Correct 14 ms 25436 KB Output is correct
19 Correct 15 ms 26284 KB Output is correct
20 Correct 16 ms 26968 KB Output is correct
21 Correct 13 ms 24668 KB Output is correct
22 Correct 13 ms 25368 KB Output is correct
23 Correct 15 ms 26200 KB Output is correct
24 Correct 15 ms 26844 KB Output is correct
25 Runtime error 173 ms 109272 KB Execution killed with signal 11
26 Halted 0 ms 0 KB -