답안 #447624

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
447624 2021-07-27T06:55:41 Z Esquire Klasika (COCI20_klasika) C++17
33 / 110
1569 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 = 31; 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 = 31; 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 351040 KB Output is correct
2 Correct 175 ms 351028 KB Output is correct
3 Correct 175 ms 351200 KB Output is correct
4 Correct 182 ms 351192 KB Output is correct
5 Correct 183 ms 351096 KB Output is correct
6 Correct 189 ms 351144 KB Output is correct
7 Correct 172 ms 351172 KB Output is correct
8 Correct 175 ms 351172 KB Output is correct
9 Correct 177 ms 351144 KB Output is correct
10 Correct 173 ms 351076 KB Output is correct
11 Correct 191 ms 351192 KB Output is correct
12 Correct 180 ms 351184 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 173 ms 351040 KB Output is correct
2 Correct 175 ms 351028 KB Output is correct
3 Correct 175 ms 351200 KB Output is correct
4 Correct 182 ms 351192 KB Output is correct
5 Correct 183 ms 351096 KB Output is correct
6 Correct 189 ms 351144 KB Output is correct
7 Correct 172 ms 351172 KB Output is correct
8 Correct 175 ms 351172 KB Output is correct
9 Correct 177 ms 351144 KB Output is correct
10 Correct 173 ms 351076 KB Output is correct
11 Correct 191 ms 351192 KB Output is correct
12 Correct 180 ms 351184 KB Output is correct
13 Correct 185 ms 351652 KB Output is correct
14 Correct 178 ms 352400 KB Output is correct
15 Correct 183 ms 352972 KB Output is correct
16 Correct 192 ms 353608 KB Output is correct
17 Correct 183 ms 351556 KB Output is correct
18 Correct 182 ms 352196 KB Output is correct
19 Correct 195 ms 352872 KB Output is correct
20 Correct 183 ms 353456 KB Output is correct
21 Correct 181 ms 351684 KB Output is correct
22 Correct 178 ms 352200 KB Output is correct
23 Correct 182 ms 352836 KB Output is correct
24 Correct 186 ms 353488 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 960 ms 418476 KB Output is correct
2 Correct 1533 ms 482156 KB Output is correct
3 Runtime error 1569 ms 524292 KB Execution killed with signal 9
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 173 ms 351040 KB Output is correct
2 Correct 175 ms 351028 KB Output is correct
3 Correct 175 ms 351200 KB Output is correct
4 Correct 182 ms 351192 KB Output is correct
5 Correct 183 ms 351096 KB Output is correct
6 Correct 189 ms 351144 KB Output is correct
7 Correct 172 ms 351172 KB Output is correct
8 Correct 175 ms 351172 KB Output is correct
9 Correct 177 ms 351144 KB Output is correct
10 Correct 173 ms 351076 KB Output is correct
11 Correct 191 ms 351192 KB Output is correct
12 Correct 180 ms 351184 KB Output is correct
13 Correct 185 ms 351652 KB Output is correct
14 Correct 178 ms 352400 KB Output is correct
15 Correct 183 ms 352972 KB Output is correct
16 Correct 192 ms 353608 KB Output is correct
17 Correct 183 ms 351556 KB Output is correct
18 Correct 182 ms 352196 KB Output is correct
19 Correct 195 ms 352872 KB Output is correct
20 Correct 183 ms 353456 KB Output is correct
21 Correct 181 ms 351684 KB Output is correct
22 Correct 178 ms 352200 KB Output is correct
23 Correct 182 ms 352836 KB Output is correct
24 Correct 186 ms 353488 KB Output is correct
25 Correct 960 ms 418476 KB Output is correct
26 Correct 1533 ms 482156 KB Output is correct
27 Runtime error 1569 ms 524292 KB Execution killed with signal 9
28 Halted 0 ms 0 KB -