//#include "stdafx.h"
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
/*int check(char d[], char result[],int i,int len) {
while (d[i] != '(' && d[i] != ')' && i<len) {
//cout << "test1 i = " << i << endl;
i++;
}
//cout << "test2 i = " << i << endl;
if (i < len) {
//cout << "test3 i = " << i << endl;
if (d[i] == '(')
{
//cout << "test4 i = " << i << endl;
num++;
int w = check(d, result, i + 1, len);
//cout << "test6 i = " << w << endl;
if (w == 0) {
cout << i << endl;
result[i] = '?';
return false;
}
else {
return check(d, result, i + 1, len);
}
}
else if (d[i] = ')') {
cout << "test5 i = " << i << " " << num << endl;
if (num > 0) {
num--;
check(d, result, i+1,len);
return 1;
}
else {
cout << "sss" << i << endl;
result[i] = '$';
check(d, result, i + 1, len);
}
}
}
else {
if (num > 0) {
return 0;
}
else {
return 1;
}
}
}*/
int num = 0;
int check(char d[], char result[], int i, int len) {
while (d[i] != '(' && d[i] != ')' && i<len) {
i++;
}// if the character is not '()', skip
if (i < len) {
if(d[i] == '('){
num++;
int loc = check(d, result, i + 1, len);
// return value loc should be the location of corresponding ')'
if (loc == -1) // means hitting the end of the str
{
result[i] = '&';
return -1;
}
else {
return check(d, result, loc + 1, len); // keep retrieving after ')'
}
}
else if (d[i] == ')' && num <= 0) {
// if num == 0 and get ')', means ')' doesn't have a match
while (d[i] == ')' && i < len) {
//cout << "test1 " << num << endl;
result[i] = '?';
i++;
}
check(d, result, i, len); //keep going
return i;
}
else { // return the location of the ')' and subtract num
if (num > 0) num--;
return i;
}
}
else { // hitting the end, return -1
return -1;
}
}
int main() {
char d[100];
while (cin.getline(d, 101)) {
int len = strlen(d);
char result[100] = { ' ' };
for (int i = 0; i < len; i++) result[i] = ' ';
for (int i = 0; i < len; i++) cout << d[i];
cout << endl;
num = 0;
check(d, result, 0, len);
for (int i = 0; i < len; i++) cout << result[i];
cout << endl;
}
return 0;
}
Ly8jaW5jbHVkZSAic3RkYWZ4LmgiCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHN0cmluZy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLyppbnQgY2hlY2soY2hhciBkW10sIGNoYXIgcmVzdWx0W10saW50IGksaW50IGxlbikgewoJd2hpbGUgKGRbaV0gIT0gJygnICYmIGRbaV0gIT0gJyknICYmIGk8bGVuKSB7CgkJLy9jb3V0IDw8ICJ0ZXN0MSBpID0gIiA8PCBpIDw8IGVuZGw7CgkJaSsrOwoJfQoJLy9jb3V0IDw8ICJ0ZXN0MiBpID0gIiA8PCBpIDw8IGVuZGw7CglpZiAoaSA8IGxlbikgewoJCS8vY291dCA8PCAidGVzdDMgaSA9ICIgPDwgaSA8PCBlbmRsOwoJCWlmIChkW2ldID09ICcoJykKCQl7CgkJCS8vY291dCA8PCAidGVzdDQgaSA9ICIgPDwgaSA8PCBlbmRsOwoJCQludW0rKzsKCQkJaW50IHcgPSBjaGVjayhkLCByZXN1bHQsIGkgKyAxLCBsZW4pOwoJCQkvL2NvdXQgPDwgInRlc3Q2IGkgPSAiIDw8IHcgPDwgZW5kbDsKCQkJaWYgKHcgPT0gMCkgewoJCQkJY291dCA8PCBpIDw8IGVuZGw7CgkJCQlyZXN1bHRbaV0gPSAnPyc7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQkJZWxzZSB7CgkJCQlyZXR1cm4gY2hlY2soZCwgcmVzdWx0LCBpICsgMSwgbGVuKTsKCQkJfQoJCX0KCQllbHNlIGlmIChkW2ldID0gJyknKSB7CgkJCWNvdXQgPDwgInRlc3Q1IGkgPSAiIDw8IGkgPDwgIiAgIiA8PCBudW0gPDwgZW5kbDsKCQkJaWYgKG51bSA+IDApIHsKCQkJCW51bS0tOwoJCQkJY2hlY2soZCwgcmVzdWx0LCBpKzEsbGVuKTsKCQkJCXJldHVybiAxOwoJCQl9CgkJCWVsc2UgewoJCQkJY291dCA8PCAic3NzIiA8PCBpIDw8IGVuZGw7CgkJCQlyZXN1bHRbaV0gPSAnJCc7CgkJCQljaGVjayhkLCByZXN1bHQsIGkgKyAxLCBsZW4pOwoJCQl9CgkJfQoJfQoJZWxzZSB7CgkJaWYgKG51bSA+IDApIHsKCQkJcmV0dXJuIDA7CgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gMTsKCQl9Cgl9Cn0qLwppbnQgbnVtID0gMDsKCmludCBjaGVjayhjaGFyIGRbXSwgY2hhciByZXN1bHRbXSwgaW50IGksIGludCBsZW4pIHsKCXdoaWxlIChkW2ldICE9ICcoJyAmJiBkW2ldICE9ICcpJyAmJiBpPGxlbikgewoJCWkrKzsKCX0vLyBpZiB0aGUgY2hhcmFjdGVyIGlzIG5vdCAnKCknLCBza2lwCiAgICAKCWlmIChpIDwgbGVuKSB7IAoJCWlmKGRbaV0gPT0gJygnKXsKCQkJbnVtKys7ICAgICAgICAKCQkJaW50IGxvYyA9IGNoZWNrKGQsIHJlc3VsdCwgaSArIDEsIGxlbik7ICAKCQkJLy8gcmV0dXJuIHZhbHVlIGxvYyBzaG91bGQgYmUgdGhlIGxvY2F0aW9uIG9mIGNvcnJlc3BvbmRpbmcgJyknCgkJCWlmIChsb2MgPT0gLTEpICAgLy8gbWVhbnMgaGl0dGluZyB0aGUgZW5kIG9mIHRoZSBzdHIKCQkJewoJCQkJcmVzdWx0W2ldID0gJyYnOwoJCQkJcmV0dXJuIC0xOwoJCQl9CgkJCWVsc2UgewoJCQkgICAgcmV0dXJuIGNoZWNrKGQsIHJlc3VsdCwgbG9jICsgMSwgbGVuKTsgIC8vIGtlZXAgcmV0cmlldmluZyBhZnRlciAnKScKCQkJfQoJCX0KCQllbHNlIGlmIChkW2ldID09ICcpJyAmJiBudW0gPD0gMCkgeyAgIAoJCQkvLyBpZiBudW0gPT0gMCBhbmQgZ2V0ICcpJywgbWVhbnMgJyknIGRvZXNuJ3QgaGF2ZSBhIG1hdGNoCgkJCXdoaWxlIChkW2ldID09ICcpJyAmJiBpIDwgbGVuKSB7CgkJCQkvL2NvdXQgPDwgInRlc3QxICIgPDwgbnVtIDw8IGVuZGw7CgkJCQlyZXN1bHRbaV0gPSAnPyc7CgkJCQlpKys7CgkJCX0KCQkJCgkJCWNoZWNrKGQsIHJlc3VsdCwgaSwgbGVuKTsgLy9rZWVwIGdvaW5nCgkJCXJldHVybiBpOwoJCX0KCQllbHNlIHsgIC8vIHJldHVybiB0aGUgbG9jYXRpb24gb2YgdGhlICcpJyBhbmQgc3VidHJhY3QgbnVtCgkJCWlmIChudW0gPiAwKSBudW0tLTsKCQkJcmV0dXJuIGk7CgkJfQoJfQoJCgllbHNlIHsgLy8gaGl0dGluZyB0aGUgZW5kLCByZXR1cm4gLTEKCQlyZXR1cm4gLTE7Cgl9Cn0KaW50IG1haW4oKSB7CgljaGFyIGRbMTAwXTsKCXdoaWxlIChjaW4uZ2V0bGluZShkLCAxMDEpKSB7CgkJaW50IGxlbiA9IHN0cmxlbihkKTsKCQljaGFyIHJlc3VsdFsxMDBdID0geyAnICcgfTsKCQlmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSByZXN1bHRbaV0gPSAnICc7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgY291dCA8PCBkW2ldOwoJCWNvdXQgPDwgZW5kbDsKCQludW0gPSAwOwoJCWNoZWNrKGQsIHJlc3VsdCwgMCwgbGVuKTsKCQlmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSBjb3V0IDw8IHJlc3VsdFtpXTsKCQljb3V0IDw8IGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==