Submission
Status:
[PPPPPPPPPx]
Subtask/Task Score:
{0/100}
Score: 0
User: C12
Problemset: composite tree
Language: cpp
Time: 0.003 second
Submitted On: 2026-01-21 11:22:16
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define pii pair<ll,ll>
#define puii pair<ull,ull>
#define piii pair<ll,pii>
#define ll long long
#define ull unsigned long long
#define mp make_pair
#define mpiii(a,b,c) make_pair(a,make_pair(b,c));
int32_t mod = 1e9+7;
/*
left **2
right **2 + 1
*/
int out[100000] = {0};
void recursive(int i){
if(out[i] == 0 || i >= 100000)return;
cout << out[i];
cout << '(';
recursive(i*2);
cout << ')';
cout << '(';
recursive(i*2 + 1);
cout << ')';
return;
}
void solve(){
int arr1[100000] = {0};
int arr2[100000] = {0};
string st;
cin >> st;
stack<ll>pos_back;
ll pos = 0;
ll index = 1;
ll num,last = 0;
for(int i = 0;i < st.length();i++){
if(st[i] == '('){
if(last == 1){
pos = 1;
index = (index*2) + pos;
}
else if(last == 0){
pos = 0;
index = (index*2);
}
pos_back.push(pos);
last = 0;
// index = (index*2) + pos;
}
else if(st[i] == ')' && !pos_back.empty()){
pos = pos_back.top();
pos_back.pop();
index = (index-pos) / 2;
// pos++;
last = 1;
}
else{
num = int(st[i])-int('0');
// if(index < 100000){
arr1[index] = num;
// }
}
// cout << st[i] << ' ' << index << '\n';
}
while(!pos_back.empty())pos_back.pop();
st.clear();
cin >> st;
pos = 0;
index = 1;
last = 0;
for(int i = 0;i < st.length();i++){
if(st[i] == '('){
if(last == 1){
pos = 1;
index = (index*2) + pos;
}
else if(last == 0){
pos = 0;
index = (index*2);
}
pos_back.push(pos);
last = 0;
// index = (index*2) + pos;
}
else if(st[i] == ')' && !pos_back.empty()){
pos = pos_back.top();
pos_back.pop();
index = (index-pos) / 2;
// pos++;
last = 1;
}
else{
num = int(st[i])-int('0');
// if(index < 100000){
arr2[index] = num;
// }
}
// cout << st[i] << ' ' << index << '\n';
}
while(!pos_back.empty())pos_back.pop();
for(int i = 0;i < 100000;i++){
if(arr1[i] > 0 && arr2[i] > 0){
out[i] = arr1[i] + arr2[i];
}
}
pos = 0;
index = 1;
recursive(1);
return;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
// ll q;
// cin >> q;
// while(q--)
solve();
return 0;
}
/*
5(2(8(5(2(8(5(2(8(5(2(8()())())(1(6(2()())(3()()))()))())())(1(6(2()())(3()()))(5(2(8(5(2(8()())())(1(6(2()())(3()()))()))())())(1(6(2()())(3()()))()))))(5(2(8(5(2(8()())())(1(6(2()())(3()()))()))())())(1(6(2()())(3()()))(5(2(8(5(2(8()())())(1(6(2()())(3()()))()))())())(1(6(2()())(3()()))())))))())(1(6(2()())(3()()))()))())())(1(6(2()())(3()()))(5(2(8(5(2(8()())())(1(6(2()())(3()()))()))())())(1(6(2()())(3()()))())))
3(4()())(8(1(2()())())(3()()))
9(2(8()())())(1(6(2()())(3()()))())
9(4()())(8(1(2()())())(3()()))
*/