№ 6760 Апробация 10.03.23 (Уровень: Средний)
У медицинской компании есть N пунктов приёма биоматериалов на анализ. Все пункты расположены вдоль автомагистрали и имеют
номера, соответствующие расстоянию от нулевой отметки до конкретного пункта. Известно количество пробирок, которое ежедневно принимают в каждом из пунктов. Пробирки перевозят в специальных транспортировочных контейнерах вместимостью не более 48 штук. Каждый транспортировочный контейнер упаковывается в пункте приёма и вскрывается только в лаборатории. Компания планирует открыть лабораторию в одном из пунктов. Стоимость перевозки биоматериалов равна произведению расстояния от пункта до лаборатории на количество контейнеров с пробирками. Общая стоимость перевозки за день равна сумме стоимостей перевозок из каждого пункта в лабораторию. Лабораторию расположили в одном из пунктов приёма биоматериалов таким образом, что общая стоимость доставки биоматериалов из всех пунктов минимальна.
Определите минимальную общую — стоимость — доставки биоматериалов из всех пунктов приёма в лабораторию.
Входные данные
Дано два входных файла (файл A и файл B), каждый из которых в первой строке содержит число N (1 ≤ N ≤ 10 000 000) – количество пунктов приёма биоматериалов. В каждой из следующих N строк находится два числа: номер пункта и количество пробирок в этом пункте (все числа натуральные, количество пробирок в каждом пункте не превышает 1000). Пункты перечислены в порядке их расположения вдоль дороги, начиная от нулевой отметки.
В ответе укажите два числа: сначала значение искомой величины для файла А, затем – для файла B.
Типовой пример организации данных во входном файле
6
1 100
2 200
5 4
7 3
8 2
10 190
При таких исходных данных и вместимости транспортировочного контейнера, составляющей 96 пробирок, компании выгодно открыть лабораторию в пункте 2. В этом случае сумма транспортных затрат составит: 1 · 2 + 3 · 1 + 5 · 1 + 6 · 1 + 8 · 2.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
Файлы к заданию: 27_B_6760 27_A_6760
import math
a=[[int(n) for n in x.split()] for x in open('27_B_6760.txt')]
del(a[0])
for i in range(len(a)):
a[i][1]=math.ceil(a[i][1]/48)
s=0
l=a[0][1]
t=7 #для файла А равно 11 - номер первой станции
p=0
for i in range(1,len(a)):
s=s+(a[i][0]-t)*a[i][1]
p=p+a[i][1]
mi=ps=s
ls=0
for i in range(1,len(a)):
ls=ls+l*(a[i][0]-t) #стоимость перевозки вверх от предполагаемого пункта сбора
ps=ps-p*(a[i][0]-t) #стоимость перевозки вниз от предполагаемого пункта сбора
s=ls+ps
mi=min(mi,s)
l=l+a[i][1]
p=p-a[i][1]
t=a[i][0]
print(mi)
44645 5431081659239
kege