【累積和メニュー】> FINAL問題【区間の数え上げ】 区間の数え上げ 4 (paizaランク C 相当) [難易度: 1404 ±50]
※リンク先へ移動するためには[paiza]へのログインが必要です。
1 行目に整数 N, K が与えられます。
2 行目に N 個の整数 a_1, a_2, ..., a_N からなる数列 a が与えられます。
この数列において、長さが 1 以上で総和が K 以下の区間がいくつあるか求めてください。
入力値(例)
10 15
1 5 9 1 20 5 3 6 5 4
出力値(例)
21
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php list($n, $k) = explode(" ", trim(fgets(STDIN))); $a = explode(" ", trim(fgets(STDIN))); $count = 0; for ($i=0; $i<count($a); $i++) { $r = $i+1; $sectionSum = 0; while ($r < count($a)+1) { $sectionSum += $a[$r-1]; if ($sectionSum > $k) break; $r++; } $count += $r-$i-1; } echo $count; ?> |