【クエリメニュー】> 【点の幅】STEP: 1 'I' の数 (paizaランク B 相当) [難易度: 1954 ±33]
※リンク先へ移動するためには[paiza]へのログインが必要です。
英語の授業中に暇だった paiza 君は、N ページの教科書を使った次のようなゲームを思いつきました。
「2人のプレイヤーがそれぞれ教科書の 1 箇所を適当に掴んで、掴んだ範囲のページに含まれる 'I' の合計数が多い方が勝ち、少ない方が負け、同じだったら引き分け!」
「ただし、 N/3 ページ以上掴んだ人は反則負けで、 2 人とも反則したら引き分け!」
(ここでの N/3 は整数であるとは限りません)
審判を任されたあなたは、各ページに含まれる 'I' の数を記録しておくことで、掴んだページの両端の番号を確認するだけで、掴んだ範囲のページに含まれる 'I' の合計数を求めることができることに気付きました。
教科書のページ数 N と試合の数 K , 各ページの 'I' の数 I_1 ... I_N と、
i 番目の試合で対戦した A と B の 2 人が掴んだページの両端のページ番号 A_l_i, A_r_i , B_l_i, B_r_iが与えられるので、各試合のジャッジしてください。
入力値(例)
3 3
0
1
2
1 1 2 2
2 2 3 3
3 3 3 3
出力値(例)
DRAW
DRAW
DRAW
解答例
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 32 33 34 35 36 37 38 39 |
<?php list($n, $k) = explode(" ", trim(fgets(STDIN))); $page_min = ($n/3.0); $sum[0] = 0; for ($i=0; $i<$n; $i++) { $a = trim(fgets(STDIN)); $sum[$i+1] = $sum[$i] + $a; } for ($i=0; $i<$k; $i++) { list($al, $ar, $bl, $br) = explode(" ", trim(fgets(STDIN))); $pagea = $ar-$al+1; $pageb = $br-$bl+1; if ($page_min <= $pagea) { if ($page_min <= $pageb) { $result = "DRAW"; } else { $result = "B"; } } else { if ($page_min <= $pageb) { $result = "A"; } else { if ($sum[$ar]-$sum[$al-1] > $sum[$br]-$sum[$bl-1]) { $result = "A"; } elseif ($sum[$ar]-$sum[$al-1] < $sum[$br]-$sum[$bl-1]) { $result = "B"; } else { $result = "DRAW"; } } } echo $result. "\n"; } ?> |