#include<bits/stdc++.h>
using namespace std;
struct node{
char a;
int id;
};
int pd[101];//为 1 为匹配上了
stack <node> st;
string s;
int main(){
cin>>s;
for(int i=0;i<s.size();i++){
if(s[i]=='('||s[i]=='['){
st.push((node){s[i],i});
}
else{
if(s[i]==')'){
if(!st.empty()&&st.top().a=='('){
node tmp=st.top();
pd[tmp.id]=pd[i]=1;
st.pop();
}else{
// st.push((node){s[i],i});
;
}
}else{
if(!st.empty()&&st.top().a=='['){
node tmp=st.top();
pd[tmp.id]=pd[i]=1;
st.pop();
}else{
// st.push((node){s[i],i});
;
}
}
}
}
for(int i=0;i<s.size();i++){
if(!pd[i]){
if(s[i]=='('||s[i]==')') cout<<"()";
if(s[i]=='['||s[i]=='[') cout<<"[]";
}else{
cout<<s[i];
}
}
return 0;
}
rt,只有 44 分,不太理解这个匹配规则。