76求调 wa#2#4#6
查看原帖
76求调 wa#2#4#6
1269461
2946401639q楼主2025/1/20 14:50
#include<bits/stdc++.h>
using namespace std;
string s;
int k;
int v[1100];
int v_left[1100];
int top;
int left_top;
void insert(int x,char a){
	s=s.substr(0,x)+a+s.substr(x,s.size()-x);
	return;
}
void f(int x){
	if(s[x]=='(')k++,insert(x+1,')');
	if(s[x]==')')k++,insert(x,'(');
	if(s[x]=='[')k++,insert(x+1,']');
	if(s[x]==']')k++,insert(x,'[');
	return;
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>s;
	s='S'+s;
	for(int i=1;i<s.size();i++){
		if(s[i]=='(' || s[i]=='[')v_left[++left_top]=i;
		if(s[i]==')'){
			if(s[v_left[left_top]]=='(')left_top--;
			else v[++top]=i;
		}
		if(s[i]==']'){
			if(s[v_left[left_top]]=='[')left_top--;
			else v[++top]=i;
		}
	}
	if(top==0){
		cout<<s.substr(1,s.size()-1);
	}else{
		for(int i=1;i<=left_top;i++){
			v[++top]=v_left[i];
		}
		sort(v+1,v+1+top);
		for(int i=1;i<=top;i++){
			f(v[i]+k);
		}
		cout<<s.substr(1,s.size()-1);
	}
	return 0;
}
2025/1/20 14:50
加载中...