27 задание. Досрок

#Решение на 1 балл task_file = open('27-A.txt') n = int(task_file.readline()) a = [int(x) for x in task_file] mini = 10 ** 20 сost = [0] * n for i in range(n): for j in range(n): # r - расстояние до переработки r = min(n - abs(i - j), abs(i - j)) сost[i] += a[j] * r if сost[i] < mini: mini = сost[i] res = i + 1 print(res)
#Решение на 2 балла task_file = open('27-B.txt') n = int(task_file.readline()) a = [int(x) for x in task_file] #считаем первую точку как и в прошлый раз сost = [0] * n for i in range(n): r = min(n - i, i) сost[0] += a[i] * r mini = сost[0] res = 1 # запоминаем отдельно сумму всех сзади и спердеи o_i = n // 2 sum_nz = sum(a[o_i:]) sum_vp = sum(a[1:o_i]) # ловко считаем каждую следующую стоимость на основании предыдущей for i in range(1, n): sum_vp += a[o_i] sum_nz += a[i - 1] - a[o_i] сost[i] = сost[i - 1] - sum_vp + sum_nz sum_vp -= a[i] o_i = (o_i + 1) % n if сost[i] < mini: mini = сost[i] res = i + 1 print(res)
0
1 комментарий
Name

while True:
print(“Зачем?»)

Ответить
Развернуть ветку
-2 комментариев
Раскрывать всегда