括号匹配(数组链表模拟)
#include<bits/stdc++.h> using namespace std; const int maxn = 5e5+7; struct node{int l,r;}p[maxn]; int n,m,pos,a[maxn],d[maxn],len,now=0; char s1[maxn],s2[maxn]; int main() { scanf("%d%d%d",&n,&m,&pos); scanf("%s",s1+1);len=strlen(s1+1); for(int i=0;i<=n+1;i++)p[i].l=i-1,p[i].r=i+1; for(int i=1;i<=len;i++) { if(s1[i]=='(')a[now++]=i; else d[i]=a[--now],d[a[now]]=i; } scanf("%s",s2+1); for(int i=1;i<=m;i++) { if(s2[i]=='R')pos=p[pos].r; else if(s2[i]=='L')pos=p[pos].l; else { int l=min(d[pos],pos); int r=max(d[pos],pos); p[p[l].l].r=p[r].r; p[p[r].r].l=p[l].l; pos=p[r].r; if(pos==n+1)pos=p[n+1].l; if(pos==0)pos=p[0].r; } } int pos=p[0].r; while(pos!=n+1) { cout<<s1[pos]; pos=p[pos].r; } cout<<endl; return 0; }