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

В городе M расположена кольцевая автодорога длиной в N километров с движением в обе стороны. На каждом километре автодороги расположены пункты приема мусора определенной вместимости. В пределах кольцевой дороги около k-ого пункта сборки мусора поставили мусороперерабатывающий завод. Стоимость доставки мусора вычисляется, как вместимость пункта сбора умноженная на расстояние от пункта сбора мусора до мусороперерабатывающего завода. Если мусороперерабатывающий завод находится рядом с пунктом сбора расстояние считается нулевым. Контейнеры нумеруются с 1 до N. Требуется найти модуль разницы стоимостей сбора всего мусора при перемещении завода с k-ой позиции контейнера на k + 1(при k = N, (k + 1)-ая позиция соответствует 1 позиции контейнера)

Описание входных данных:

Первое число N — количество контейнеров для мусора, второе число k — номер контейнера для мусора рядом с которым стоит перерабатывающий завод. Последующие N чисел — количество килограмм мусора, которое производится на точке.

Описание выходных данных:

Одно число — модуль разницы стоимостей сбора мусора при перемещении завода с k-ой позиции контейнера на k + 1(при k = N, (k + 1)-ая позиция соответствует 1 позиции контейнера)

file = open(’garbage2.txt’, ’rt’)
 
n = int(file.readline())
 
k = int(file.readline()) — 1
 
a = [int(file.readline()) for i in range(n)]
 
s = [sum(a[0:n // 2])]
 
for i in range(1, n):
 
    s.append(s[i — 1] — a[i — 1] + a[(i — 1 + n // 2) % n])
 

 
summa = sum(a)
 
p = []
 
for i in range(n):
 
    p.append(summa — s[i])
 

 
# ищем стоимость, если завод стоит на
 
# k-ой позиции
 
price = 0
 
for i in range(1, n):
 
    price += min(i, n — i) * a[(i + k) % n]
 

 
# найдем k+1 стоимость
 
new_price = price — s[k + 1] + p[k + 1]
 
print(abs(price — new_price))
 

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