Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

СРОЧНО!!! НАПИСАТЬ КОД НА ПИТОНЕ ДЛЯ ОЛИМПИАДЫ Деньги если код наберет 100.100 баллов

Даниял Кулдуев Ученик (114), на голосовании 1 неделю назад
Красная Шапочка отправилась на болото для сбора клюквы, чтобы испечь пирожки для бабушки. Клюквенное болото представляет собой координатную прямую. Берег, на котором стоит девочка, имеет координату
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') 
Голосование за лучший ответ
paulcucumber Знаток (371) 1 месяц назад
 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))
Senya MakapУченик (119) 1 месяц назад
Герои не носят плащи!
NxxYasI Nssil Знаток (475) 1 месяц назад
 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))
Похожие вопросы