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

На каждом километре кольцевой автомагистрали расположены многоэтажные жилые дома. Длина кольцевой автодороги равна N км. Нулевой километр и N-й километр находятся в одной точке. Жители домов ежедневно получают газеты. Известен объем заказываемых газет для каждого жилого дома. Доставлять газеты можно лишь на расстояние, не превышающее K километров. Муниципалитет хочет определить суммарный объем газет, пункт доставки которых будет размещен в одном из домов так, чтобы из него ежедневно доставлялось максимальное количество газет.

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

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

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

Типовой пример организации данных во входном файле

8 3

2

5

4

1

7

3

2

6

При таких исходных данных объем газет из оптимального расположения пункта доставки составит: 29.

f = open(’27B.txt’)
n, m = map(int, f.readline().split())
a = [int(i) for i in f]
#дублирование списка a, чтобы учесть возможность "зацикливания" кольцевой автомагистрали
a *= 2
#инициализация переменных для хранения максимальной суммы и текущей суммы
maxi = maxs = sum(a[:2*m+1])
#перебор всех возможных интервалов доставки газет
for i in range(m+1,2*n-m):
    #пересчет текущей суммы с учетом "сдвига" окна на новый интервал
    maxs += a[i+m] - a[i-m-1]
    if maxs > maxi: #поиск максимальной суммы
        maxi = maxs
print(maxi)

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