1. paizaラーニングトップ
  2. レベルアップ問題集
  3. ソートメニュー応用編(言語選択)
  4. 問題一覧 Scala編
  5. マンハッタン距離

ソートメニュー応用編のサムネイル
マンハッタン距離 (paizaランク B 相当)

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

問題

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

二次元平面上に n 個の点があり、それぞれの座標は (y_i, x_i) です。これらの点を原点( 座標( 0, 0 ) )とのマンハッタン距離が昇順になるようにソートしてください。マンハッタン距離が等しい複数の座標に関しては好きな順序で出力して構いません。

2 つの座標 (y_i, x_i), (y_j, x_j) のマンハッタン距離は以下のように計算できます( |x| は x の絶対値を表す)。

・ | y_i - y_j | + | x_i - x_j |

入力される値

n
y_1 x_1
y_2 x_2
...
y_n x_n


・ 1 行目に、数値 n が与えられます。
・ 2 行目から n + 1 行目にかけて座標 (y_i, x_i) が与えられます。


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

n 個の点を原点とのマンハッタン距離が昇順になるように並び替え、改行区切りで出力してください。

また、末尾に改行を入れ、余計な文字、空行を含んではいけません。

条件

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

・ 1 ≦ n ≦ 100,000
・ -100 ≦ y_i, x_i ≦ 100

入力例1

4
1 1
0 0
10 10
-2 1

出力例1

0 0
1 1
-2 1
10 10

問題一覧へ戻る

ページの先頭へ戻る