답안 #447625

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
447625 2021-07-27T06:57:12 Z Esquire Klasika (COCI20_klasika) C++17
33 / 110
1529 ms 524292 KB
#include<bits/stdc++.h>
using namespace std ; 
typedef long long ll ; 
typedef pair <int ,int> pii ; 
const int MAXN = 2e5 + 5; 
const int MOD = 1e9 + 7 ; 

#define F first 
#define S second 
#define debug(x) cerr << #x << " :" << x << "\n" 

int q ,n ,st[MAXN] ,ed[MAXN] ,child[MAXN * 31][2] ,newint ,a[MAXN] ,b[MAXN] ,dist[MAXN] ,tme ,idx[MAXN] ;  
vector <pii> G[MAXN] ; 
set <int> s[MAXN * 31] ; 
string sq[MAXN] ; 

void dfs(int u){
	st[u] = tme++ ; 
	for (auto [v ,w] : G[u]){
		dist[v] = dist[u] ^ w ; 
		dfs(v) ; 
	}
	ed[u] = tme++ ; 
}

void add(int p ,int id){
	int root = 0 ; 
	for (int i = 30; i >= 0; i--){
		int x = (p >> i) & 1 ;
		if (child[root][x] == -1){
			child[root][x] = ++newint ; 
		}
		root = child[root][x] ; 
		s[root].insert(st[id]) ;
	}
}

bool check(int id ,int v){
	auto it = s[id].lower_bound(st[v]) ; 
	if (it == s[id].end()){
		return false ; 
	}
	return (*it) <= ed[v] ; 
}

void ans(int u ,int v){ 
	int len = dist[u] ; 
	int root = 0 ; 
	for (int i = 30; i >= 0; i--){
		int x = (len >> i) & 1 ; 
		if (child[root][1 - x] != -1 && check(child[root][1 - x] ,v)){
			root = child[root][1 - x] ; 
			if (!x){
				len += (1 << i) ; 
			}
		}
		else {
			if (x == 1){
				len -= (1 << i) ; 
			}
			root = child[root][x] ; 
		}
	}
	cout << len << "\n" ; 
}

int main (){
	ios::sync_with_stdio(false); cin.tie(0) ;cout.tie(0) ; 
	memset(child ,-1 ,sizeof child) ; 
	cin >> q ; 
	n = 1 ;
	for (int i = 1; i <= q; i++){
		cin >> sq[i] >> a[i] >> b[i] ; 
		if (sq[i][0] == 'A'){
			n++ ; 
			G[a[i]].push_back({n ,b[i]}) ; 
			idx[i] = n ; 
		}
	}
	dfs(1) ;
	add(dist[1] ,1) ; 
	for (int i = 1; i <= q; i++){
		if (sq[i][0] == 'Q'){
			ans(a[i] ,b[i]) ; 
		}
		else {
			add(dist[idx[i]] ,idx[i]) ;
		}
	}
	return 0 ; 
}



 
# 결과 실행 시간 메모리 Grader output
1 Correct 173 ms 351004 KB Output is correct
2 Correct 175 ms 351028 KB Output is correct
3 Correct 171 ms 351228 KB Output is correct
4 Correct 173 ms 351160 KB Output is correct
5 Correct 176 ms 351072 KB Output is correct
6 Correct 172 ms 351044 KB Output is correct
7 Correct 173 ms 351172 KB Output is correct
8 Correct 174 ms 351168 KB Output is correct
9 Correct 175 ms 351136 KB Output is correct
10 Correct 179 ms 351100 KB Output is correct
11 Correct 173 ms 351168 KB Output is correct
12 Correct 178 ms 351168 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 173 ms 351004 KB Output is correct
2 Correct 175 ms 351028 KB Output is correct
3 Correct 171 ms 351228 KB Output is correct
4 Correct 173 ms 351160 KB Output is correct
5 Correct 176 ms 351072 KB Output is correct
6 Correct 172 ms 351044 KB Output is correct
7 Correct 173 ms 351172 KB Output is correct
8 Correct 174 ms 351168 KB Output is correct
9 Correct 175 ms 351136 KB Output is correct
10 Correct 179 ms 351100 KB Output is correct
11 Correct 173 ms 351168 KB Output is correct
12 Correct 178 ms 351168 KB Output is correct
13 Correct 181 ms 351608 KB Output is correct
14 Correct 184 ms 352204 KB Output is correct
15 Correct 180 ms 352968 KB Output is correct
16 Correct 180 ms 353420 KB Output is correct
17 Correct 175 ms 351556 KB Output is correct
18 Correct 179 ms 352184 KB Output is correct
19 Correct 204 ms 352888 KB Output is correct
20 Correct 180 ms 353320 KB Output is correct
21 Correct 181 ms 351556 KB Output is correct
22 Correct 181 ms 352128 KB Output is correct
23 Correct 180 ms 352836 KB Output is correct
24 Correct 184 ms 353388 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 909 ms 416608 KB Output is correct
2 Correct 1455 ms 478292 KB Output is correct
3 Runtime error 1529 ms 524292 KB Execution killed with signal 9
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 173 ms 351004 KB Output is correct
2 Correct 175 ms 351028 KB Output is correct
3 Correct 171 ms 351228 KB Output is correct
4 Correct 173 ms 351160 KB Output is correct
5 Correct 176 ms 351072 KB Output is correct
6 Correct 172 ms 351044 KB Output is correct
7 Correct 173 ms 351172 KB Output is correct
8 Correct 174 ms 351168 KB Output is correct
9 Correct 175 ms 351136 KB Output is correct
10 Correct 179 ms 351100 KB Output is correct
11 Correct 173 ms 351168 KB Output is correct
12 Correct 178 ms 351168 KB Output is correct
13 Correct 181 ms 351608 KB Output is correct
14 Correct 184 ms 352204 KB Output is correct
15 Correct 180 ms 352968 KB Output is correct
16 Correct 180 ms 353420 KB Output is correct
17 Correct 175 ms 351556 KB Output is correct
18 Correct 179 ms 352184 KB Output is correct
19 Correct 204 ms 352888 KB Output is correct
20 Correct 180 ms 353320 KB Output is correct
21 Correct 181 ms 351556 KB Output is correct
22 Correct 181 ms 352128 KB Output is correct
23 Correct 180 ms 352836 KB Output is correct
24 Correct 184 ms 353388 KB Output is correct
25 Correct 909 ms 416608 KB Output is correct
26 Correct 1455 ms 478292 KB Output is correct
27 Runtime error 1529 ms 524292 KB Execution killed with signal 9
28 Halted 0 ms 0 KB -