답안 #98799

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
98799 2019-02-26T00:10:01 Z thiago4532 Poklon (COCI17_poklon7) C++17
0 / 120
531 ms 133844 KB
#include <bits/stdc++.h>
#define left _left
#define right _right
 
using namespace std;
typedef long long ll;
 
const int maxn = 1e6 + 10;
ll left[maxn], right[maxn];
ll val[maxn];
int nivel[maxn];
int n;
vector<int> teste[maxn];
 
void dfs(int u){
	if(left[u] > 0) nivel[left[u]] = nivel[u] + 1, dfs(left[u]);
	if(right[u] > 0) nivel[right[u]] = nivel[u] + 1, dfs(right[u]);
}
 
int32_t main(){
	ios::sync_with_stdio(false), cin.tie(0);
	cin >> n;
	for(int i=1;i<=n;i++){
		int a, b;
		cin >> a >> b;
		left[i] = a;
		right[i] = b;
	}
	nivel[1] = 1;
	dfs(1);
	vector< pair<int, int> > v;
	for(int i=1;i<=n;i++)
		v.push_back({nivel[i], i});
 
	sort(v.begin(), v.end());
	reverse(v.begin(), v.end());
 
	for(int i=0;i<(int)v.size();i++){
		int u = v[i].second;
 
		if(left[u] > 0 && right[u] > 0){
			val[left[u]] = max(val[left[u]], val[right[u]]);
			val[right[u]] = max(val[left[u]], val[right[u]]);
 
			val[u] = val[left[u]] + val[right[u]];
		}else if(left[u] > 0 || right[u] > 0){
			if(left[u] < 0) swap(left[u], right[u]);
			
			if(-right[u] <= val[left[u]]) right[u] = -val[left[u]];
			else{
				val[left[u]] = -right[u];
				if(val[left[u]] % 2 != 0) val[left[u]]++, right[u]--;
			}
			val[u] = val[left[u]] - val[right[u]];
		}else{
			left[u] = min(left[u], right[u]);
			right[u] = min(left[u], right[u]);
 
			val[u] = -(left[u] + right[u]);
		}
	}
	
	string str;
	if(!val[1]) str = "0";
	
	while(val[1]){
		str += '0' + (val[1]%2);
		val[1] /= 2;
	}
	reverse(str.begin(), str.end());
	cout << str << "\n";
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 24 ms 23808 KB Output isn't correct
2 Incorrect 27 ms 23808 KB Output isn't correct
3 Runtime error 49 ms 47608 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 62 ms 47608 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 50 ms 47608 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 48 ms 47580 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 49 ms 47524 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 63 ms 47520 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 53 ms 47608 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 54 ms 47736 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Runtime error 54 ms 48376 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Runtime error 56 ms 48508 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Runtime error 68 ms 51060 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Runtime error 83 ms 54316 KB Execution killed with signal 11 (could be triggered by violating memory limits)
15 Runtime error 87 ms 53488 KB Execution killed with signal 11 (could be triggered by violating memory limits)
16 Runtime error 191 ms 68696 KB Execution killed with signal 11 (could be triggered by violating memory limits)
17 Runtime error 346 ms 95828 KB Execution killed with signal 11 (could be triggered by violating memory limits)
18 Runtime error 349 ms 97364 KB Execution killed with signal 11 (could be triggered by violating memory limits)
19 Runtime error 481 ms 105752 KB Execution killed with signal 11 (could be triggered by violating memory limits)
20 Runtime error 531 ms 133844 KB Execution killed with signal 11 (could be triggered by violating memory limits)