【日付セット】連休を伸ばす2 (paizaランク A 相当) 解答例 – PHP編【paiza】
【日付セット】 > 連休を伸ばす2 (paizaランク A 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。
前回と問題自体は一緒ですが出題問題が非常に大きな数値に変わっており、アルゴリズムを理解して処理を軽くしなければ制限時間以内に終わりません。
解答例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php $input = explode(" ",trim(fgets(STDIN))); $n = $input[0]; $l = $input[1]; $array = explode(" ",trim(fgets(STDIN))); $counter = 0; $zero = 0; $one = 0; for($y = 0,$r = 0;$r < $n;$r++){ if($array[$r] == 1){ $one++; } else { $zero++; while($zero > $l){ if($array[$y] == 1){ $one--; } else { $zero--; } $y++; } } if($counter < ($one + $zero)){ $counter = ($one + $zero); } } echo $counter; ?> |
解答方針
連休を検査する繰り返し処理である「for」分の中が前回と異なります。検査始点なる「$y」と検査範囲を示す「$r」の二つの変数を使い繰り返し処理を実行します。

