Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int H,U,u,S,G;
- void add(int w,bool x){
- ++S;
- G+=(c==d)&&s[w]==c;
- if(x){
- if(s[w]==d)H+=U,H%=MOD,u+=P[S-1],u%=MOD;
- U=U*2%MOD;
- if(s[w]==c)++U;
- }else{
- if(s[w]==c)H+=u,H%=MOD,U+=P[S-1],U%=MOD;
- u=u*2%MOD;
- if(s[w]==d)++u;
- }
- }
- void del(int w,bool x){
- --S;
- G-=(c==d)&&s[w]==c;
- if(x){
- if(s[w]==c)U=(U+MOD-1)%MOD;
- U=U*IV%MOD;
- if(s[w]==d)H=H-U+MOD,H%=MOD,u+=MOD-P[S],u%=MOD;
- }else{
- if(s[w]==d)u=(u+MOD-1)%MOD;
- u=u*IV%MOD;
- if(s[w]==c)H=(H-u+MOD)%MOD,U+=MOD-P[S],U%=MOD;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement