BJFUOJ
#include<bits/stdc++.h>
using namespace std;
int maxx = -0x7fffffff;
typedef struct BiTnode {
int data;
struct BiTnode *left, *right;
} BiTnode, *BiTree;
void CreatTree(BiTree &b, int a[], int &i) {
if (a[i] == 0) b = NULL;
else {
b = new BiTnode;
b->data = a[i];
CreatTree(b->left, a, ++i);
CreatTree(b->right, a, ++i);
}
}
int MaxLength(BiTree &b) {
if (b == NULL) return 0;
if (b->left == NULL && b->right == NULL) {
return b->data;
}
int le = 0, ri = 0;
if (b->left != NULL) {
le = MaxLength(b->left);
maxx = max(maxx, le);
}
if (b->right != NULL) {
ri = MaxLength(b->right);
maxx = max(maxx, ri);
}
maxx = max(maxx, le + ri + b->data);
}
int main() {
int a[100];
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int i = 0;
BiTree b;
CreatTree(b, a, i);
MaxLength(b);
cout << maxx;
return 0;
}