2.3 Структуры

2.3.1 Ближайшая точка

Условие

Даны координаты N точек на плоскости. Найдите точку, ближайшую к началу координат, и выведите её номер. Если несколько точек находятся на одинаковом минимальном расстоянии, выберите первую во входных данных. Номера точек начинаются с единицы.

Объявите структуру struct Point с целочисленными полями x и y. Сохраните точки в массиве структур. Реализуйте функцию int nearest_point(const struct Point points[], int count), которая возвращает индекс выбранной точки с нуля, не изменяет массив и не выполняет ввод или вывод. В функции main прочитайте данные, вызовите функцию и преобразуйте полученный индекс в номер точки.

Для сравнения расстояний достаточно сравнивать значения x² + y². Используйте для их вычисления тип long long, выполняя преобразование до умножения: при заданных ограничениях квадрат координаты может не помещаться в 32-битный int.

Ограничения

Время: 2 секунды. Память: 64 МиБ. Вывод: до 2 МиБ. Стандарты: C11 / C++17.

Входные данные

В первой строке вводится целое число N — количество точек. В следующих N строках вводятся по два целых числа xᵢ и yᵢ — координаты очередной точки. Ограничения: 1 ≤ N ≤ 1000, −10⁶ ≤ xᵢ, yᵢ ≤ 10⁶.

Выходные данные

Одно целое число — номер ближайшей к началу координат точки, от 1 до N.

Примеры

Вход 1
3
3 4
1 1
5 0
Ожидаемый выход
2
Вход 2
3
1 0
0 -1
2 2
Ожидаемый выход
1
Вход 3
2
1000000 1000000
0 0
Ожидаемый выход
2

Пробный запуск

Код берётся из редактора. Запуск не создаёт посылку и не влияет на баллы.

Выберите пример или введите свои данные и нажмите «Запустить».

Текущая попытка

Отправьте решение. Этапы и результат появятся здесь автоматически.

Все попытки

Войдите, чтобы видеть свои попытки.

Редактор

Один файл до 64 КиБ · Tab / Shift+Tab — отступ · Esc — выход из редактора · черновик сохраняется для этого аккаунта, задачи и языка.