СРОЧНО!!! НАПИСАТЬ КОД НА ПИТОНЕ ДЛЯ ОЛИМПИАДЫ Деньги если код наберет 100.100 баллов
Красная Шапочка отправилась на болото для сбора клюквы, чтобы испечь пирожки для бабушки. Клюквенное болото представляет собой координатную прямую. Берег, на котором стоит девочка, имеет координату
0
, а клюквенная поляна — координату
N+1
. В точках с координатами
1,2,…,N
расположены кочки. Первоначально у девочки
E
единиц энергии. Красная Шапочка может прыгнуть из точки
x
в точку
y
(
x<y
), потратив на это
y−x
единиц энергии, то есть затраченная энергия равна расстоянию между кочками. После того, как девочка приземлится на кочке с координатой
i
, она получает
a
i
единиц энергии (при этом значение
a
i
может оказаться отрицательным, тогда энергия Красной Шапочки уменьшится при приземлении). Нельзя, чтобы энергия Красной Шапочки в какой-либо момент оказалась меньше нуля. Например, Красная Шапочка не может прыгнуть с кочки
1
на кочку
3
, имея одну единицу энергии, вне зависимости от того, сколько энергии она получит на
3
-й кочке, так как для осуществления такого прыжка необходимо две единицы энергии.
Так как Красной Шапочке ещё надо вернуться обратно, девочке интересно, какое максимальное количество энергии у неё может оказаться, когда она достигнет поляны (точки с координатой
N+1
).
...
print('help')
def max_energy(N, E, a):
# Инициализируем dp массив длиной N+2 (кочки и поляна)
dp = [-float('inf')] * (N + 2)
dp[0] = E # В начальной точке энергия равна E
# Проходим по каждой кочке
for i in range(N + 1): # Начиная с 0 до N включительно
if dp[i] < 0: # Если энергии на кочке i нет, пропускаем её
continue
# Рассчитываем, куда можем прыгнуть дальше
for j in range(i + 1, N + 2):
cost = j - i # Затраты на прыжок
if dp[i] >= cost: # Если хватает энергии на прыжок
dp[j] = max(dp[j], dp[i] - cost + (a[j - 1] if j <= N else 0))
# Результат в точке N+1
return dp[N + 1]
# Ввод данных
N = int(input()) # Количество кочек
E = int(input()) # Начальная энергия
a = list(map(int, input().split())) # Энергии на каждой кочке
# Вывод максимальной энергии на поляне
print(max_energy(N, E, a))
import sys
s = int(sys.stdin.readline())
n = int(sys.stdin.readline())
a = [(elem[::-1]) for elem in enumerate([int(sys.stdin.readline()) for i in range(n)], 1)]
f = s
u = 0
for j in range(len(a)):
e, i = a[j]
if i > f and a[j][0] >= 0:
break
elif i > f and e <= 0:
continue
(u, f) = (a[j][1], f + e) if f + a[j][0] >= f else (u, f)
print((f - n - 1) % (f - n))