#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;
}
# |
Verdict |
Execution time |
Memory |
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) |