#include<iostream> #include<algorithm> using namespace std; #define DEBUG_ENABLE 0 #define MAXN 20005 struct Operate{ char c; int l,r; }op[MAXN]; int seg[MAXN*4][2]; int f[MAXN*2]; struct SegmentTree{ int left[MAXN*8],right[MAXN*8]; int add[MAXN*8]; char fl[MAXN*8]; char fr[MAXN*8]; int num[MAXN*8]; inline void build(int k,int l,int r){ left[k]=l; right[k]=r; add[k]=0; fl[k]=fr[k]=0; num[k]=1; if(l==r) return ; int m=(l+r)>>1; build(k*2,l,m); build(k*2+1,m+1,r); } inline void push_up(int k){ //update fr[k]*fl[k] fl[k]=fl[k*2]+add[k]; fr[k]=fr[k*2+1]+add[k]; //update num[k