Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<bits/stdc++.h>using namespace std;const int MAX=6e6;const int MOD=1e9+7;typedef long long ll;char s[MAX];int suf[MAX],pre[MAX];void dfs(int x,int y,int tag){if(tag==0){for(int i=x;i<=y;i++){if(s[i]!='(')printf("%c",s[i]);else{if(suf[i]-1>=i+1)dfs(i+1,suf[i]-1,1);if(suf[i]+1<=y)dfs(suf[i]+1,y,0);return;}}}else{for(int i=y;i>=x;i--){if(s[i]!=')')printf("%c",s[i]);else{if(pre[i]+1<=i-1)dfs(pre[i]+1,i-1,0);if(pre[i]-1>=x)dfs(x,pre[i]-1,1);