Стоимость доставки фантиков равно произведению количества фантиков на квадрат расстояния от сборщика до мусорки.
Дано число — количество мусорок, расположенных по кругу, затем
чисел — количество фантиков в каждой мусорке. Требуется найти все убывающие взвешенные суммы для всех начальных позиций пункта сбора. Убывающей взвешенной суммой является сумма членов, имеющих вид
, где
— i-ое число фантиков, значение i проходит половину круга относительно своей стартовой позиции.
Вывести все эти числа от до
.
Для и чисел
,
,
,
получатся следующие убывающие взвешенные суммы:
,
,
,
f = open("3.txt")
n = int(f.readline())
a = [int(f.readline()) for i in range(n)]
s = [0] * n
s[0] = sum(a[:n // 2])
for i in range(1, n):
s[i] = s[i - 1] - a[i - 1] + a[(i + n // 2 - 1) % n]
u = [0] * n
#База. Посчитали первую убывающую
#взвешенную сумму
for i in range(n // 2):
t = n//2 - 1 - i
u[0] += a[i] * (2*t + 1)
#Пересчитываем все остальные
for i in range(1, n):
u[i] = u[i - 1] + 2*s[i] - a[(i - 1 + n // 2) % n] - a[i - 1] * (2 * (n//2 - 1 - 0) + 1)
print(*u)
Ответ: 1400 2300 3200 4100 4400 3500