【累積和メニュー】> 【1 次元上のいもす法】STEP: 1 1 次元上のいもす法 1 (paizaランク C 相当) [難易度: 1443 ±44]
※リンク先へ移動するためには[paiza]へのログインが必要です。
横に並んだ 10 個のマスがあり、最初、マスには全て 0 が書かれています。
以下の 5 つの範囲が与えられます。それぞれの範囲に対して、その範囲に含まれるマスに 1 を加算していきます。
すべての加算が終わった時点での 10 個のマスに書かれた値のうち、最大の値をいもす法を用いて求めてください。
1 マス目から 3 マス目
1 マス目から 8 マス目
3 マス目から 8 マス目
3 マス目から 6 マス目
7 マス目から 9 マス目
入力値(例)
なし
出力値(例)
すべての加算が終わった時点での 10 個のマスに書かれた値のうち、最大の値をいもす法を用いて求めてください。
末尾に改行を入れ、余計な文字、空行を含んではいけません。
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php $a = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; $l = [1, 1, 3, 3, 7]; $r = [3, 8, 8, 6, 9]; for ($i=0; $i<5; $i++) { $a[$l[$i]-1]++; $a[$r[$i]]--; } for ($i=0; $i<11; $i++) { if ($i > 0) $a[$i] += $a[$i-1]; } //print_r($a); echo max($a); ?> |