Задание 27. Информатика. ЕГЭ-2022. 1 вариант
- Просмотры: 144
- Изменено: 25 ноября 2024
У медицинской компании есть \(N\) пунктов приёма биоматериалов на анализ. Все пункты расположены вдоль автомагистрали и имеют номера, соответствующие расстоянию от нулевой отметки до конкретного пункта. Известно количество пробирок, которое ежедневно принимают в каждом из пунктов. Пробирки перевозят в специальных транспортировочных контейнерах вместимостью не более \(36\) штук. Каждый транспортировочный контейнер упаковывается в пункте приёма и вскрывается только в лаборатории. Компания планирует открыть лабораторию в одном из пунктов. Стоимость перевозки биоматериалов равна произведению расстояния от пункта до лаборатории на количество контейнеров с пробирками. Общая стоимость перевозки за день равна сумме стоимостей перевозок из каждого пункта в лабораторию. Лабораторию расположили в одном из пунктов приёма биоматериалов таким образом, что общая стоимость доставки биоматериалов из всех пунктов минимальна.
Определите минимальную общую стоимость доставки биоматериалов из всех пунктов приёма в лабораторию.
Входные данные
Дано два входных файла (файл \(A\) и файл \(B\)), каждый из которых в первой строке содержит число \(N\) (\(1 \leq N \leq 10~000~000\)) – количество пунктов приёма биоматериалов. В каждой из следующих \(N\) строк находится два числа: номер пункта и количество пробирок в этом пункте (все числа натуральные, количество пробирок в каждом пункте не превышает \(1~000\)). Пункты перечислены в порядке их расположения вдоль дороги, начиная от нулевой отметки. В ответе укажите два числа: сначала значение искомой величины для файла \(A\), затем – для файла \(B\).
Типовой пример организации данных во входном файле
\(6\)
\(1\) \(100\)
\(2\) \(200\)
\(5\) \(4\)
\(7\) \(3\)
\(8\) \(2\)
\(10\) \(190\)
При таких исходных данных и вместимости транспортировочного контейнера, составляющей \(96\) пробирок, компании выгодно открыть лабораторию в пункте \(2\). В этом случае сумма транспортных затрат составит: \(1 \cdot 2 + 3 \cdot 1 + 5 \cdot 1 + 6 \cdot 1 + 8 \cdot 2 = 32\).
Решение:
Python
def make_el(x):
q = 36
temp = tuple(map(int, x.split()))
return temp[0], temp[1] // q + bool(temp[1] % q)
file_names = ('27A.txt', '27B.txt')
for file_name in file_names:
f = open(file_name)
N = int(f.readline())
arr = tuple(make_el(st) for st in f.readlines())
s = 0
left_sum = arr[0][1]
right_sum = 0
for i in range(1, N):
s += (arr[i][0] - arr[0][0]) * arr[i][1]
right_sum += arr[i][1]
min_s = s
for i in range(1, N):
s += (arr[i][0] - arr[i-1][0]) * (left_sum - right_sum)
left_sum += arr[i][1]
right_sum -= arr[i][1]
min_s = min(s, min_s)
print(min_s)
Ответ:
\(51063\)
\(5634689219329\)