Ограничение по времени: 2.000 секунд
Ограничение по памяти: 500.000 мегабайт
Одно из распространенных среди детей развлечений на Рождество — наряжаться в костюмы и ходить собирать конфеты. Однако, в этом году что-то пошло не так, и на улицы слишком много детей, поэтому конфет на всех может не хватить!
Поэтому дети решили собраться в группы, чтобы иметь больше шансов собрать конфеты. К сожалению, они не успели вовремя скоординироваться, поэтому каждый ребенок решил пойти в сторону ближайшего к нему другого ребенка. Разумеется, это не лучшая стратегия, ведь может так оказаться, что ребенок A
пошел в сторону ребенка B
, а тот, в свою очередь, уже выдвинулся в сторону ребенка C
. Но, будем надеяться, какие-то группы они все же смогут сформировать...
Всего на улицы Новосибирска вышло n
детей, при чем i-й ребенок находится в точке с координатами (xi, yi). Как известно, новосибирское расстояние между точками (xi, yi) и (xj, yj ) равно |xi − xj| + |yi − yj|.
Чтобы предотвратить хаос на дорогах, вам поручено определить для каждого ребенка номер ближайшего к нему другого ребенка, чтобы иметь возможность хотя бы примерно предсказать траектории их перемещения по городу.
В первой строке ввода дано целое число n — количество детей в городе (2 ≤ n ≤ 105).
В i-й из следующих n строк через пробел даны два целых числа xi и yi — координаты i-го ребенка (0 ≤ xi, yi ≤ 109). Не гарантируется, что все дети находятся в разных точках — если два ребенка имеют одинаковые координаты, для них обоих кратчайшее расстояние будет равно 0.
Выведите через пробел n целых чисел от 1 до n, i-е из которых равно номеру ребенка, ближайшего по новосибирскому расстоянию к i-му.
input | output |
---|---|
3 1 1 3 3 6 6 |
2 1 2 |
4 1 6 0 4 3 8 7 3 |
2 1 1 2 |