Задача к ЕГЭ по информатике на тему «Мусорки, кольцевая дорога» №9

В городе, на одной из кольцевых автодорог с двусторонним движением, расположены N многоэтажных жилых зданий для детских садов и школ. Длина кольцевой автодороги равна К км, при этом нулевой километр и K-й километр находятся в одной точке.

Дети ежедневно получают пончики, которые упакованы в доставочные пакеты, каждый из которых вмещает не более 300 штук. Каждый доставочный пакет используется для доставки пончиков только в одно здание, и в каждое здание может быть доставлен не более одного пакета с неполной загрузкой.

Склад для пончиков открыли в одном из зданий таким образом, чтобы количество доставляемых пакетов с пончиками было максимальным. Пончики в те здания, которые находятся на расстоянии более M километров от склада, не доставляются. Требуется определить необходимое количество доставочных пакетов на складе.

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

Даны два входных файла: файл A и файл B, каждый из которых в первой строке содержит числа N, K и M (1 ≤ N ≤ 10000000,1 ≤ K ≤ 10000000,1 ≤ M  ≤ 10000000)  – количество зданий, длина кольцевой автодороги в километрах и максимальное расстояние, на которое можно осуществлять доставку пончиков. В каждой из следующих N строк находятся два числа: номер километра кольцевой автодороги, на котором расположено здание, и количество пончиков(все числа натуральные, количество не превышает 2000). Данные указаны в порядке расположения зданий на автодороге.

В ответе укажите два числа через пробел: сначала искомое значение для файла А, затем для файла B.

f = open(’27B_4.txt’)
n,k,m = map(int,f.readline().split())
a = []
kms = set()

for i in range(n):
    km,donut = map(int,f.readline().split())
    km = km % k
    count_packet = donut // 300 if donut % 300 == 0 else donut // 300 + 1
    a.append([km,count_packet])
b = [0]*k
for i in range(n):
    km,count_packet = a[i]
    b[km] = count_packet
b = b * 2
mx = s = sum(b[:2*m+1])
for i in range(m+1,k+m):
    s = s - b[i-m-1] + b[i+m]
    if b[i] > 0:
        mx = max(mx,s)
print(mx)

Ответ: 156 19271
Оцените статью
Я решу все!