macro_rules! mo_algorithm {
(
$lr:expr,
($l:ident, $r:ident),
|$i:tt| $inc:expr,
|$d:tt| $dec:expr,
|$a:tt| $answer:expr $(,)?
) => { ... };
(
$lr:expr,
($l:ident, $r:ident),
|$il:tt| $incl:expr,
|$dl:tt| $decl:expr,
|$ir:tt| $incr:expr,
|$dr:tt| $decr:expr,
|$a:tt| $answer:expr $(,)?
) => { ... };
}
Expand description
solve with Mo’s algorithm
arg:
- lr: slice of pair of usize
- (l, r): ident of current pair
- incl: |i| expr: del i, l+=1 (post)
- decl: |i| expr: add i, l-=1 (pre)
- incr: |i| expr: add i, r+=1 (post)
- decr: |i| expr: del i, r-=1 (pre)
- answer: |i| expr: answer i-th pair of lr
incr and decr can be omitted, if simultaneous