Списки · 22 из 24
Пункт выдачи посередине
Служба доставки открывает пункт выдачи на длинной улице частных домов. Люди ходят за заказами пешком, и служба хочет поставить пункт так, чтобы всем вместе ходить было меньше всего. Первое, что пришло в голову, — среднее арифметическое адресов. Но в одном доме живёт многодетная семья с десятком заказов в неделю, и с ней среднее уезжает так, что всем остальным далеко.
Что сделать
Найдите дом, у которого поставить пункт, чтобы путь всех заказов был наименьшим, и посчитайте этот путь.
Что приходит
doma— где стоят дома, в метрах от начала улицы, в любом порядкеzakazy— сколько заказов в неделю у каждого дома, в том же порядке
Что вернуть
Пару (tochka, put): у какого дома пункт и сколько метров вместе проходят все заказы.
Допишите функцию gde_punkt в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Три дома — на 2, 9 и 4 метре, у каждого по заказу. По порядку это 2, 4, 9: средний — дом на 4 метре. Заказам с 2 и с 9 метра идти 2 и 5 метров — (4, 7).
gde_punkt([2, 9, 4], [1, 1, 1])
(4, 7)
Путь заказа — расстояние от его дома до пункта; путь всех — сумма по домам: zakazy · |дом − пункт|. Пункт ставится у такого дома: идём по домам от начала улицы и складываем их заказы; пункт — у первого дома, на котором набралась хотя бы половина всех заказов. Для любого распределения заказов это наименьший путь из возможных (почему — в разборе). Домов хотя бы один, у двух домов может быть один адрес, заказов — целые не меньше нуля, но хотя бы у одного дома больше нуля.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.