No.045 D

塗るマスは行の昇順かつ同じ行なら列の昇順にソートしておく.

の正方形内に 個塗られたマスがある正方形の数をカウンタとして持っておく. 初期値は のとき である.

そして, ひとつずつ塗るマスを見ていき, 塗るマスを含む の正方形内にそれ以前にいくつ塗られたマスがあるかどうかを数える. 塗るマスはソート済なので二分探索が使える. それ以前に塗られたマスの数のカウンタをひとつ減らし, それ以前に塗られたマスの数+1のカウンタをひとつ増やす.