1. paizaラーニングトップ
  2. レベルアップ問題集
  3. Cランク・スキルチェック過去問題セット(言語選択)
  4. 問題一覧 Ruby編
  5. 「みかんの仕分け」を解くために:part4 Ruby編

Cランク・スキルチェック過去問題セットのサムネイル
「みかんの仕分け」を解くために:part4 Ruby編(paizaランク C 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!


part3では 2 個の箱にみかんを仕分けました。
次は 3 個以上の箱の中から適切な箱に仕分けましょう。


みかんを仕分ける箱が P 個与えられます。
それぞれの箱には整数 k_1, k_2, ... , k_P が書かれています。
今回の問題では、箱に書かれた整数が N の倍数であるとは限りません。
みかんはある定数 N の倍数のうち、みかんの重さに一番近い数の重さが書かれた箱に仕分けられます。
重さが一番近い箱が複数ある場合、数が大きい方の箱に仕分けられます。
それぞれのみかんが与えられた箱の内、どの箱に仕分けられるかを出力して下さい。

入力される値

入力は以下のフォーマットで与えられます。

N M
P
k_1 k_2 ... k_P
w_1
w_2
...
w_M

・ 1 行目に仕分ける重さの区切りを表す整数、みかんの個数を表す整数 N, M がこの順で半角スペース区切りで与えられます。
・ 2 行目にみかんを仕分ける箱の個数 P が与えられます。
・ 3 行目に P 個の箱に書かれた整数 k_1, k_2, ... , k_P が空白区切りで与えられます。
・ 続く M 行のうちの i 行目 (1 ≦ i ≦ M) には、i 番目のみかんの重さを表す整数 w_i が与えられます。
・ 入力は合計で M + 3 行となり、入力値最終行の末尾に改行が 1 つ入ります。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

以下の形式で出力してください。

y_1
y_2
...
y_M

・ 期待する出力は M 行からなります。
・ i 行目 (1 ≦ i ≦ M) にはそれぞれ i 番目のみかんの仕分け先の箱に書かれた数を表す整数 y_i を出力して下さい。
・ 出力最終行の末尾に改行を入れ、余計な文字、空行を含んではいけません。

条件

すべてのテストケースにおいて、以下の条件をみたします。

・ 1 ≦ N ≦ 100
・ 1 ≦ M ≦ 10
・ 3 ≦ P ≦ 100
・ 1 ≦ k_1 < k_2 < ... < k_P ≦ 2,000
・ N の倍数である k_i (1 ≦ i ≦ P) が少なくとも 1 つ存在する
・ 1 ≦ w_i ≦ 1,000 (1 ≦ i ≦ M)

入力例1

10 3
4
2 10 20 23
24
35
3

出力例1

20
20
10

入力例2

5 3
5
1 5 12 20 39
12
1
38

出力例2

5
5
20

入力例3

6 3
5
1 6 13 18 30
12
24
33

出力例3

18
30
30

問題一覧へ戻る

ページの先頭へ戻る