Example #1
0
 SegTree Merge(SegTree F, SegTree T)
 {
     if (F.size >= T.size)
     {
         long FT = T.AddRight(F);
         long TF = T.AddLeft(F);
         F.c1 = (F.c1 + T.c1 + FT) % Define.mod;
         F.c2 = (F.c2 + T.c2 + FT + TF) % Define.mod;
         T.Add(F);
         return(F);
     }
     else
     {
         long FT = F.AddLeft(T);
         long TF = F.AddRight(T);
         T.c1 = (F.c1 + T.c1 + FT) % Define.mod;
         T.c2 = (F.c2 + T.c2 + FT + TF) % Define.mod;
         F.Add(T);
         return(T);
     }
 }