Submission
Status:
[PPPPPPPPPx]
Subtask/Task Score:
{0/100}
Score: 0
User: NovemNotes
Problemset: composite tree
Language: cpp
Time: 0.003 second
Submitted On: 2026-03-12 15:32:48
#include <bits/stdc++.h>
using namespace std;
const int N = 109;
const int M = 200009;
int cnt=0;
string one;
string two;
queue<char> q;
int layer[N];
vector<int> u(M,-1),v(M,-1);
vector<int> ans(M,-1);
int mx=0;
void travel(int node){
if(ans[node]==-1)return ;
cout << ans[node];
cout << "(";
travel(2*node);
cout << ")";
cout << "(";
travel(2*node+1);
cout << ")";
}
int main(){
ios_base::sync_with_stdio(false);cin.tie(NULL);
cin >> one >> two;
int num = 0;
int node = 1;
bool check=false;
for(auto &x:one){
if(isalnum(x)){
num = num*10+(x-'0');
check=true;
}else{
// cout << num << " " << node << "\n";
if(check && u[node]==-1){
u[node]=num;
mx=max(mx,node);
check=false;
}// cout << num << " " << ((1<<q.size())+layer[q.size()]%2) << "\n";
num=0;
if(x=='('){
q.emplace(x);
node <<= 1;
if(layer[q.size()]%2==1)node++;
}else{
layer[q.size()]++;
node >>= 1;
q.pop();
}
}
}
check=false;
for(auto &x:two){
if(isalnum(x)){
check=true;
num = num*10+(x-'0');
}else{
// cout << num << " " << node << "\n";
if(check&&v[node]==-1){
v[node]=num;
check=false;
mx=max(mx,node);
}// cout << num << " " << ((1<<q.size())+layer[q.size()]%2) << "\n";
num=0;
if(x=='('){
q.emplace(x);
node <<= 1;
if(layer[q.size()]%2==1)node++;
}else{
layer[q.size()]++;
node >>= 1;
q.pop();
}
}
}
for(int i=1;i<=mx;i++){
if(u[i]!=-1&&v[i]!=-1)ans[i]=u[i]+v[i];
}
travel(1);
return 0;
}
/*
5(2(8()())())(1(6(2()())(3()()))())
3(4()())(8(1(2()())())(3()()))
*/