답안 #888097

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
888097 2023-12-16T03:05:30 Z Ahmed_Solyman Klasika (COCI20_klasika) C++14
33 / 110
1369 ms 524288 KB
/*
In the name of Allah
made by: Ahmed_Solyman
*/
#include <bits/stdc++.h>
#include <ext/rope>
 
using namespace std;
using namespace __gnu_cxx;
#pragma GCC optimize("-Ofast")
#pragma GCC optimize("-O1")
//-------------------------------------------------------------//
typedef long long ll;
typedef unsigned long long ull;
#define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define PI acos(-1)
#define lb lower_bound
#define ub upper_bound
#define endl '\n'
#define all(v) v.begin(),v.end()
#define allr(v) v.rbegin(),v.rend()
#define sum_to(n) (n*(n+1))/2
#define pb push_back
#define pf push_front
#define fil(arr,x) memset(arr,x,sizeof(arr))
const ll mod=1e9+7;
int dx[8]={0,1,0,-1,1,1,-1,-1};
int dy[8]={1,0,-1,0,1,-1,-1,1};
//-------------------------------------------------------------//
ll lcm(ll a,ll b)
{
    return (max(a,b)/__gcd(a,b))*min(a,b);
}
void person_bool(bool x)
{
    cout<<(x?"YES":"NO")<<endl;
}
const int N=2e5+5;
set<int>s[30*N];
int id=1,mark=1,l[N],r[N],trie[30*N][2];
vector<int>adj[N];
void insert(int x,int ind){
    int p=0;
    for(int i=29;i>=0;i--){
        bool g=x & (1<<i);
        if(~trie[p][g])p=trie[p][g];
        else p=trie[p][g]=id++;
        s[p].insert(ind);
    }
}
int solve(int a,int b){
    int p=0,ret=0;
    for(int i=29;i>=0;i--){
        bool g=a & (1<<i);g^=1;
        if(~trie[p][g] && s[trie[p][g]].lower_bound(l[b])!=s[trie[p][g]].end() && *s[trie[p][g]].lower_bound(l[b])<=r[b])p=trie[p][g],ret|=(1<<i);
        else p=trie[p][g^1];
    }
    return ret;
}
void dfs(int node,int p){
    l[node]=mark++;
    for(auto i:adj[node])
        if(i!=p)
            dfs(i,node);
    r[node]=mark-1;
}
int main()
{
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    #ifndef ONLINE_JUDGE
 //   freopen("input.in", "r", stdin);
  //  freopen("output.out", "w", stdout);
    #endif
    fast
    fil(trie,-1);
    int q;cin>>q;
    vector<int>d(q+1);
    int v=2;
    vector<array<int,3>>e;
    while(q--){
        string s;cin>>s;
        if(s=="Add"){
            int u,w;cin>>u>>w;
            d[v]=d[u]^w;
            e.push_back({0,u,v});
            adj[u].push_back(v++);
        }
        else{
            int a,b;cin>>a>>b;
            e.push_back({1,a,b});
        }
    }
    dfs(1,1);
    insert(0,l[1]);
    for(auto i:e){
        int t=i[0],u=i[1],v=i[2];
        if(t==0){
            insert(d[v],l[v]);
        }
        else{
            cout<<solve(d[u],v)<<endl;
        }
    }
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 62 ms 335444 KB Output is correct
2 Correct 60 ms 335568 KB Output is correct
3 Correct 60 ms 335700 KB Output is correct
4 Correct 60 ms 335696 KB Output is correct
5 Correct 60 ms 335444 KB Output is correct
6 Correct 61 ms 335444 KB Output is correct
7 Correct 60 ms 335632 KB Output is correct
8 Correct 64 ms 335772 KB Output is correct
9 Correct 59 ms 335540 KB Output is correct
10 Correct 59 ms 335444 KB Output is correct
11 Correct 59 ms 335576 KB Output is correct
12 Correct 60 ms 335696 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 62 ms 335444 KB Output is correct
2 Correct 60 ms 335568 KB Output is correct
3 Correct 60 ms 335700 KB Output is correct
4 Correct 60 ms 335696 KB Output is correct
5 Correct 60 ms 335444 KB Output is correct
6 Correct 61 ms 335444 KB Output is correct
7 Correct 60 ms 335632 KB Output is correct
8 Correct 64 ms 335772 KB Output is correct
9 Correct 59 ms 335540 KB Output is correct
10 Correct 59 ms 335444 KB Output is correct
11 Correct 59 ms 335576 KB Output is correct
12 Correct 60 ms 335696 KB Output is correct
13 Correct 62 ms 335956 KB Output is correct
14 Correct 62 ms 336720 KB Output is correct
15 Correct 63 ms 337232 KB Output is correct
16 Correct 64 ms 337744 KB Output is correct
17 Correct 62 ms 335908 KB Output is correct
18 Correct 62 ms 336456 KB Output is correct
19 Correct 63 ms 337232 KB Output is correct
20 Correct 64 ms 337772 KB Output is correct
21 Correct 61 ms 335952 KB Output is correct
22 Correct 63 ms 336464 KB Output is correct
23 Correct 64 ms 337180 KB Output is correct
24 Correct 66 ms 337748 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 572 ms 400116 KB Output is correct
2 Correct 967 ms 458752 KB Output is correct
3 Correct 1369 ms 517376 KB Output is correct
4 Runtime error 1041 ms 524288 KB Execution killed with signal 9
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 62 ms 335444 KB Output is correct
2 Correct 60 ms 335568 KB Output is correct
3 Correct 60 ms 335700 KB Output is correct
4 Correct 60 ms 335696 KB Output is correct
5 Correct 60 ms 335444 KB Output is correct
6 Correct 61 ms 335444 KB Output is correct
7 Correct 60 ms 335632 KB Output is correct
8 Correct 64 ms 335772 KB Output is correct
9 Correct 59 ms 335540 KB Output is correct
10 Correct 59 ms 335444 KB Output is correct
11 Correct 59 ms 335576 KB Output is correct
12 Correct 60 ms 335696 KB Output is correct
13 Correct 62 ms 335956 KB Output is correct
14 Correct 62 ms 336720 KB Output is correct
15 Correct 63 ms 337232 KB Output is correct
16 Correct 64 ms 337744 KB Output is correct
17 Correct 62 ms 335908 KB Output is correct
18 Correct 62 ms 336456 KB Output is correct
19 Correct 63 ms 337232 KB Output is correct
20 Correct 64 ms 337772 KB Output is correct
21 Correct 61 ms 335952 KB Output is correct
22 Correct 63 ms 336464 KB Output is correct
23 Correct 64 ms 337180 KB Output is correct
24 Correct 66 ms 337748 KB Output is correct
25 Correct 572 ms 400116 KB Output is correct
26 Correct 967 ms 458752 KB Output is correct
27 Correct 1369 ms 517376 KB Output is correct
28 Runtime error 1041 ms 524288 KB Execution killed with signal 9
29 Halted 0 ms 0 KB -