#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
int sum[maxn<<2],mi[maxn<<2],ma[maxn<<2];
int n;
char s[maxn];
void update(int o,int l,int r,int pos,int c)
{
if(l==r)
{
sum[o]=c;mi[o]=c;ma[o]=c;
return ;
}
int m=(l+r)>>1;
if(pos<=m)update(o<<1,l,m,pos,c);
else update(o<<1|1,m+1,r,pos,c);
sum[o]=sum[o<<1]+sum[o<<1|1];
ma[o]=max(ma[o<<1],sum[o<<1]+ma[o<<1|1]);
mi[o]=min(mi[o<<1],sum[o<<1]+mi[o<<1|1]);
}
int main()
{
scanf("%d%s",&n,s);
int x=1;
for(int i = 0 ; i < n; i++)
{
if(s[i]=='L'){if(x>1)x--; }
else if(s[i]=='R')x++;
else if(s[i]=='(')update(1,1,n,x,1);
else if(s[i]==')')update(1,1,n,x,-1);
else update(1,1,n,x,0);
if(mi[1]<0 || sum[1]!=0)printf("-1 ");
else printf("%d ",ma[1]);
}
return 0;
}
Codeforces Round #603 (Div. 2)E. Editor
最新推荐文章于 2024-09-30 01:36:19 发布