問題
解答
入場者を計算する方法で悩みました。
しかし、今までの問題でしていた出入り口に置いていた数字の1
や-1
を入場者数に変えるだけでした。はあ、すっきり!!
<?php
list($q, $m) = explode(" ", trim(fgets(STDIN)));
// 配列の範囲が与えられなかったので、取りうる可能性がある値の範囲分初期化
$a = array_fill(0, 2001, 0);
for($i = 0; $i < $q; $i++) {
list($left, $right, $p) = explode(" ", trim(fgets(STDIN)));
// 入場者数を更新
$a[$left] += $p;
// 退場者数を更新(退場自国の次の時間から人数が減る)
if($right + 1 <= 2000) {
$a[$right+1] -= $p;
}
}
// indexが0の時を無視する
// 0の時には前の要素が存在しないから
for($i = 1; $i <= 2000; $i++) {
$a[$i] += $a[$i - 1];
}
if($m > max($a)) {
echo "Yes";
} else {
echo "No";
}
?>