No.038 D

箱は で昇順にソートしておく.

番目の箱を一番外側の箱にしたときの最大の入れ子の数を とすると,

となる. これをこのまま計算すると となる.

そこでセグメント木を使う. インデックスとして を取り, 値としてそのときの最大の入れ子の数として DP を行いつつセグメント木を更新していく.

が同じ値がある場合は で降順になるようにソートしておけば同じ の後の DP が前の DP に影響を受けることがなくなる.