题解 CF1023C 【Bracket Subsequence】
MorsLin
2018-08-19 09:47:55
$b$为答案字符串,我们枚举$a$数组中的每一个括号,每扫到一个括号,就把它加入$b$里,如果为左括号,$cnt{+}{=}1$,当$cnt==m/2$就跳出循环,然后从后面补右括号就行了
没初始化$b$数组,FST了…… QAQ
```cpp
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
int n,m; cin>>n>>m; m/=2;
char a[200010],b[200010]; cin>>a;
memset(b,0,sizeof(b));
int len=strlen(a)-1,tot=0,cnt=0;
for(int i=0;i<=len;i++){
if(a[i]=='('){
b[tot++]='(';
cnt++;
}
if(cnt==m) break;
if(a[i]==')'){
b[tot++]=')';
}
}
for(int i=tot;i<m*2;i++) b[i]=')';
cout<<b;
return 0;
}
```