В городе расположена кольцевая автодорога длиной в
километров с движением в обе стороны. На каждом километре автодороги расположены пункты приема мусора определенной вместимости. В пределах кольцевой дороги в одном из пунктов сборки мусора собираются поставить мусороперерабатывающий завод таким образом, чтобы стоимость доставки мусора была минимальной.
Стоимость доставки мусора вычисляется, как вместимость пункта сбора умноженная на расстояние от пункта сбора мусора до мусороперерабатывающего завода. Если мусороперерабатывающий завод находится рядом с пунктом сбора расстояние считается нулевым.
Контейнеры нумеруются с 1 до . Рядом с каким пунктом сбора мусора нужно поставить мусороперерабатывающий завод?
Описание входных данных:
Первое число — количество контейнеров для мусора. Последующие
чисел — количество килограмм мусора, которое производится на точке.
Описание выходных данных:
Одно число — номер контейнера для мусора рядом с которым стоит расположить перерабатывающий завод.
file = open(’1.txt’) # Открываем файл
n = int(f.readline()) # Считываем количество контейнеров
# Список с вместимостью каждого пункта
a = [int(i) for i in f]
# Инициализируем начальную стоимость доставки мусора,
# если завод расположен в пункте по индексу 0
s = a[n // 2] * (n // 2) # Прибавляем к сумме средний элемент
for i in range(1, n // 2):
# Добавляем стоимость доставки для пунктов слева и справа
s += a[i] * i + a[-i] * i
# Рассчитываем разницу в стоимости доставки мусора
# при перемещении завода на следующий пункт
d = sum(a) - sum(a[1:(n // 2) + 1]) * 2
# Так как пункт по индексу 0 посчитали отдельно, возьмем его изначально в ответ
mn = s # Задаём минимальную стоимость
p = 0 # Задаём пункт для ответа
for i in range(1, n): # Для каждого следующего пункта находим стоимость доставки
s += d # Обновляем текущую стоимость доставки
if s < mn:
mn = s # Запоминаем сумму
p = i + 1 # Запоминаем номер пункта
# Рассчитываем смещение разницы стоимости доставки
# при перемещении завода к следующему пункту
r = a[i % n] * 2 - a[(i + n // 2) % n] * 2
d += r # Обновляем разницу в стоимости доставки
print(p) # Выводим максимальную стоимость