実行時間制限: 2 sec / メモリ制限: 256 MB
配点 : 200 点
問題文
xy 平面があり、その上に N 人の学生がいて、M 個のチェックポイントがあります。
i 番目の学生がいる座標は (a_i,b_i) (1≦i≦N) であり、番号 j のチェックポイントの座標は (c_j,d_j) (1≦j≦M) です。
これから合図があり、各学生はマンハッタン距離で一番近いチェックポイントに集合しなければなりません。
2つの地点 (x_1,y_1) と (x_2,y_2) 間のマンハッタン距離は |x_1-x_2|+|y_1-y_2| で表されます。
ここで、|x| は x の絶対値を表します。
ただし、一番近いチェックポイントが複数ある場合には、番号が最も小さいチェックポイントに移動することとします。
合図の後に、各学生がどのチェックポイントに移動するかを求めてください。
制約
- 1≦N,M≦50
- -10^8≦a_i,b_i,c_j,d_j≦10^8
- 入力は全て整数である。
入力
入力は以下の形式で標準入力から与えられる。
N M a_1 b_1 : a_N b_N c_1 d_1 : c_M d_M
出力
解答を N 行に出力せよ。
i (1 ≦i≦N) 番目の行には、i 番目の学生が訪れるチェックポイントの番号を出力せよ。
入力例 1
2 2 2 0 0 0 -1 0 1 0
出力例 1
2 1
1 番目の学生と各チェックポイント間のマンハッタン距離は以下の通りです。
- 番号 1 のチェックポイントへのマンハッタン距離は |2-(-1)|+|0-0|=3
- 番号 2 のチェックポイントへのマンハッタン距離は |2-1|+|0-0|=1
したがって、最も近いチェックポイントの番号は 2 であるため、1 行目には 2 と出力します。
2 番目の学生と各チェックポイント間のマンハッタン距離は以下の通りです。
- 番号 1 のチェックポイントへのマンハッタン距離は |0-(-1)|+|0-0|=1
- 番号 2 のチェックポイントへのマンハッタン距離は |0-1|+|0-0|=1
最も近いチェックポイントが複数ある場合は、番号が最も小さいチェックポイントに移動するため、2 行目には 1 と出力します。
入力例 2
3 4 10 10 -10 -10 3 3 1 2 2 3 3 5 3 5
出力例 2
3 1 2
同じ座標に複数のチェックポイントが存在する場合もあります。
入力例 3
5 5 -100000000 -100000000 -100000000 100000000 100000000 -100000000 100000000 100000000 0 0 0 0 100000000 100000000 100000000 -100000000 -100000000 100000000 -100000000 -100000000
出力例 3
5 4 3 2 1
Score : 200 points
Problem Statement
There are N students and M checkpoints on the xy-plane.
The coordinates of the i-th student (1 \leq i \leq N) is (a_i,b_i), and the coordinates of the checkpoint numbered j (1 \leq j \leq M) is (c_j,d_j).
When the teacher gives a signal, each student has to go to the nearest checkpoint measured in Manhattan distance.
The Manhattan distance between two points (x_1,y_1) and (x_2,y_2) is |x_1-x_2|+|y_1-y_2|.
Here, |x| denotes the absolute value of x.
If there are multiple nearest checkpoints for a student, he/she will select the checkpoint with the smallest index.
Which checkpoint will each student go to?
Constraints
- 1 \leq N,M \leq 50
- -10^8 \leq a_i,b_i,c_j,d_j \leq 10^8
- All input values are integers.
Input
The input is given from Standard Input in the following format:
N M a_1 b_1 : a_N b_N c_1 d_1 : c_M d_M
Output
Print N lines.
The i-th line (1 \leq i \leq N) should contain the index of the checkpoint for the i-th student to go.
Sample Input 1
2 2 2 0 0 0 -1 0 1 0
Sample Output 1
2 1
The Manhattan distance between the first student and each checkpoint is:
- For checkpoint 1: |2-(-1)|+|0-0|=3
- For checkpoint 2: |2-1|+|0-0|=1
The nearest checkpoint is checkpoint 2. Thus, the first line in the output should contain 2.
The Manhattan distance between the second student and each checkpoint is:
- For checkpoint 1: |0-(-1)|+|0-0|=1
- For checkpoint 2: |0-1|+|0-0|=1
When there are multiple nearest checkpoints, the student will go to the checkpoint with the smallest index. Thus, the second line in the output should contain 1.
Sample Input 2
3 4 10 10 -10 -10 3 3 1 2 2 3 3 5 3 5
Sample Output 2
3 1 2
There can be multiple checkpoints at the same coordinates.
Sample Input 3
5 5 -100000000 -100000000 -100000000 100000000 100000000 -100000000 100000000 100000000 0 0 0 0 100000000 100000000 100000000 -100000000 -100000000 100000000 -100000000 -100000000
Sample Output 3
5 4 3 2 1