Example #1
0
    static long resolve(long value, long lazyValue, STParams p)
    {
        var ibgn = p.index * p.segsize;
        var iend = ibgn + p.segsize;

        return(lazyValue * (S[iend] - S[ibgn] + mod) % mod);
    }
Example #2
0
 static int postpone(bool isLazy, int oldValue, int value, STParams p)
 {
     return(isLazy ? oldValue + value : value);
 }
Example #3
0
 static Node resolve(Node v, int lazyValue, STParams p)
 {
     return(lazyValue % 2 == 1 ? new Node(v.n0 * v.n1 - v.ninv, v.n1, v.n0) : v);
 }
Example #4
0
 static Node merge(Node l, Node r, STParams p)
 {
     return(new Node(l.ninv + r.ninv + l.n1 * r.n0, l.n0 + r.n0, l.n1 + r.n1));
 }
Example #5
0
 static long merge(long x, long y, STParams p)
 {
     return((x + y) % mod);
 }