【累積和メニュー】> FINAL問題【1 次元上のいもす法】1 次元上のいもす法 4 (paizaランク C 相当) [難易度: 1315 ±48]
※リンク先へ移動するためには[paiza]へのログインが必要です。
1 行目に整数 N, Q が与えられます。
2 行目に Q 個の範囲 [L_i, R_i] (1 ≦ i ≦ Q) が整数で Q 行で与えられます。
横に並んだ N 個のマスがあり、最初、マスには全て 0 が書かれています。
それぞれの範囲に対して、その範囲に含まれるマスに 1 を加算していきます。
すべての加算が終わった時点での N 個のマスに書かれた値のうち、最大の値をいもす法を用いて求めてください。
入力値(例)
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 list($n, $q) = explode(" ", trim(fgets(STDIN))); $a = array_fill(0, $n+1, 0); for ($i=0; $i<$q; $i++) { list($left, $right) = explode(" ", trim(fgets(STDIN))); $l[] = $left; $r[] = $right; $a[$l[$i]-1]++; $a[$r[$i]]--; } for ($i=0; $i<$n+1; $i++) { if ($i > 0) $a[$i] += $a[$i-1]; } //print_r($a); echo max($a); ?> |