【累積和メニュー】> 【1 次元上のいもす法】STEP: 3 1 次元上のいもす法 3 (paizaランク C 相当) [難易度: 1232 ±52]
※リンク先へ移動するためには[paiza]へのログインが必要です。
1 行目に整数 N が与えられます。
2 行目以降に N 個の範囲 [L_i, R_i] (1 ≦ i ≦ N) が整数で N 行で与えられます。
横に並んだ 10 個のマスがあり、最初、マスには全て 0 が書かれています。
それぞれの範囲に対して、その範囲に含まれるマスに 1 を加算していきます。
すべての加算が終わった時点での 10 個のマスに書かれた値のうち、最大の値をいもす法を用いて求めてください。
入力値(例)
5
1 3
1 8
3 8
3 6
7 9
出力値(例)
4
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php $a = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; $n = trim(fgets(STDIN)); for ($i=0; $i<$n; $i++) { list($left, $right) = explode(" ", trim(fgets(STDIN))); $l[] = $left; $r[] = $right; $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); ?> |