Python

Решите в питоне

Выведите диаметр данного множества – максимальное расстояние между любыми двумя точками.

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

Программа получает на вход набор точек на плоскости. Сначала задано количество точек n, затем идет последовательность из n строк, каждая из которых содержит два числа: координаты точки. Величина n не превосходит 100000, все исходные координаты – целые числа, не превосходящие 103.

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

Необходимо вывести диаметр данного множества (действительное число с точностью до 15 значащих цифр после запятой).
Для примера:
Ввод:
2
1 2
Скучно - слишком много нудного кода.

Идея простая: у нас не более 2001 значения координаты X и не более 2001 значения координаты Y (если от -1000 до 1000). Предположим, кол-во разных координат Y меньше, чем кол-во разных координат X. Тогда для каждого существующего значения координаты Y оставляем только две точки: с минимальной и максимальной координатой X. В результате из исходных 100000 точек остаётся не более 4002 точек - в 25 раз меньше точек и в 625 раз меньше пар точек. Даже если перебирать все пары точек в лоб, понадобится проанализировать не более 8 006 001 пары точек - что вполне реализуемо даже на Python.

Если меньше разных значений у координаты X, просто меняем X и Y местами.
Nikita Morozov
Nikita Morozov
56 158
Лучший ответ
Геннадий Терехин Код в питоне сможете написать?
Здравствуйте, Мария!
Вот программа для Вас:
 # Ввожу в программу количество строк 
n = int(input("n = "))
# Создаю список для хранения координат
lst = list()
# Ввожу в цикле координаты n точек
for i in range(n):
# Ввожу 2 числа
k = input()
# Преобразую их из строки в список строк
k = k.split()
# Преобразую список строк в набор чисел
k = map(int, k)
k = list(k)
# Добавляю список чисел в список координат
lst.append(k)

# Задаю начальное значение максимального диаметра
max_diameter = 0
# Ищу максимальное расстояние между точками
for i in range(n):
for j in range(i+1,n):
# Вычисляю расстояние между i-й и j-й точками
d = (lst[i][0]**2 + lst[j][1]**2)**0.5
# Если это расстояние больше максимального, то
if d > max_diameter:
# Выбираю это расстояние максимальным
max_diameter = d
print(f"Диаметр множества: {max_diameter:.15f}")
Jimi Hendrix
Jimi Hendrix
11 615