Submission
Status:
[PPPPPPPPPx]
Subtask/Task Score:
{0/100}
Score: 0
User: C12
Problemset: composite tree
Language: cpp
Time: 0.004 second
Submitted On: 2026-01-20 14:51:18
#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 arr1[1000] = {0};
int arr2[1000] = {0};
int out[1000] = {0};
void recursive(int i){
if(out[i] == 0)return;
cout << out[i];
cout << '(';
recursive(i*2);
cout << ')';
cout << '(';
recursive(i*2 + 1);
cout << ')';
return;
}
void solve(){
string st;
cin >> st;
stack<ll>pos_back;
int pos = 0;
int index = 1;
int 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 = pos_back.top();
pos_back.pop();
index = (index-pos) / 2;
// pos++;
last = 1;
}
else{
num = st[i]-'0';
arr1[index] = num;
}
// cout << st[i] << ' ' << index << '\n';
}
while(!pos_back.empty())pos_back.pop();
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 = pos_back.top();
pos_back.pop();
index = (index-pos) / 2;
// pos++;
last = 1;
}
else{
num = st[i]-'0';
arr2[index] = num;
}
// cout << st[i] << ' ' << index << '\n';
}
while(!pos_back.empty())pos_back.pop();
for(int i = 0;i < 100;i++){
// cout << arr1[i] << ' ' << arr2[i] << ' ';
if(arr1[i] > 0 && arr2[i] > 0){
out[i] = arr1[i] + arr2[i];
}
// cout << out[i] << ' ';
}
pos = 0;
index = 1;
recursive(1);
// while(1){
// if(out[index] > 0){
// cout << out[index] << ' ';
// index *= 2;
// pos_back.push(0);
// }
// else{
// pos = pos_back.top();
// pos_back.pop();
// if(pos == 0){
// index += 1;
// pos_back.push(1);
// }
// else if(pos == 1){
// index = (index-1)/2;
// }
// }
// if(!pos_back.empty()){
// return;
// }
// }
return;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
// ll q;
// cin >> q;
// while(q--)
solve();
return 0;
}
/*
5(2(8()())())(1(6(2()())(3()()))())
3(4()())(8(1(2()())())(3()()))
*/