Advertisement
Morass

Add / delete

Nov 2nd, 2017
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.71 KB | None | 0 0
  1.     int H,U,u,S,G;
  2.     void add(int w,bool x){
  3.         ++S;
  4.         G+=(c==d)&&s[w]==c;
  5.         if(x){
  6.             if(s[w]==d)H+=U,H%=MOD,u+=P[S-1],u%=MOD;
  7.             U=U*2%MOD;
  8.             if(s[w]==c)++U;
  9.         }else{
  10.             if(s[w]==c)H+=u,H%=MOD,U+=P[S-1],U%=MOD;
  11.             u=u*2%MOD;
  12.             if(s[w]==d)++u;
  13.         }
  14.     }  
  15.     void del(int w,bool x){
  16.         --S;
  17.         G-=(c==d)&&s[w]==c;
  18.         if(x){
  19.             if(s[w]==c)U=(U+MOD-1)%MOD;
  20.             U=U*IV%MOD;
  21.             if(s[w]==d)H=H-U+MOD,H%=MOD,u+=MOD-P[S],u%=MOD;
  22.         }else{
  23.             if(s[w]==d)u=(u+MOD-1)%MOD;
  24.             u=u*IV%MOD;
  25.             if(s[w]==c)H=(H-u+MOD)%MOD,U+=MOD-P[S],U%=MOD;
  26.         }
  27.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement