ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

ABC080 D - Recording

問題
提出コード

解法

まずは、同一チャンネル内で区間が連続するもの、つまり(s,t) = (1,2)(2,4)をまとめて(1,4)のようにしてしまいます。これは、それぞれのチャンネルについて区間をわけ、そして開始時間の昇順でソートをして前から見ていき、今見ている区間の終わりの時間と次の区間の始まりの時間が同時刻であれば合体、というようにしていけばよいです。
あとは、いもす法を用いて、時刻iで必要な録画機の個数を調べていき、その最大値をとれば完成です。
今回、0.5という数字がでてきているので、すべての時刻を2倍してあげます。すると、(s,t)という区間の録画には、
2s-1から、2t-1という閉区間で録画機が必要になります。
なので、sum[i] = 時刻iで必要な録画機の個数、とすると、sum[2s-1]に1追加し、sum[2t]から1減算をすることで、あとはsum[i]について、はじめから累積和をとっていけば、sum[i]を完成させることができます。
あとは、全てのsum[i]のうち最大値をとることで、答えとなります。sumの配列は、時刻を2倍していることから、とりうる時刻の最大値の2倍だけ要素数が必要なことに注意してください。