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

Помогите пожалуйста решить задачу (составить программу) на языке Python. Заранее благодарю!

Makar Ученик (216), на голосовании 1 неделю назад
Красная Шапочка отправилась на болото для сбора клюквы, чтобы испечь пирожки для бабушки. Клюквенное болото представляет собой координатную прямую. Берег, на котором стоит Шапочка, имеет координату 0, а клюквенная поляна координату N+1. В точках с координатами 1, 2, ……, NN расположены кочки. Первоначально у девочки E единиц энергии. Красная Шапочка может прыгнуть из точки xx в точку y (x<y), потратив на это (y−x) единиц энергии, то есть количество единиц затраченной энергии равно расстоянию между кочками.

После того как девочка приземлится на кочке с координатой i, она получает aiai единиц энергии (при этом значение aiai может оказаться отрицательным, тогда энергия Красной Шапочки уменьшится при приземлении). Нельзя, чтобы энергия Красной Шапочки в какой‑либо момент оказалась меньше нуля. Например, Красная Шапочка не может прыгнуть с кочки 1 на кочку 3, имея одну единицу энергии, вне зависимости от того, сколько энергии она получит на 3-й кочке, так как для осуществления такого прыжка необходимо две единицы энергии. Так как Красной Шапочке ещё надо вернуться обратно, девочке интересно, какое максимальное количество энергии у неё может оказаться, когда она достигнет поляны (точки с координатой N+1).

Формат входных данных
Первая строка входных данных содержит целое число E первоначальный запас энергии Красной Шапочки, 1≤E≤109.
Вторая строка входных данных содержит целое число N количество кочек на болоте, 1≤N≤5×105.
Следующие N строк содержат по одному целому числу ai энергия, которую получает Красная Шапочка на i-й кочке, −2000≤ai≤2000.

Формат выходных данных
Программа должна вывести одно число максимальное количество единиц энергии, которое останется у Красной Шапочки после достижения клюквенной поляны. Если девочка не сможет достигнуть цели, выведите одно число «−1» (без кавычек).

Система оценки
Решения, правильно работающие при N≤15, будут оцениваться в 20 баллов.
Решения, правильно работающие при N≤900, будут оцениваться в 70 баллов.
Решения, правильно работающие, когда все ai≥0, будут набирать не менее 20 баллов.

Замечание
В первом примере три кочки и первоначально 2 единицы энергии у Красной Шапочки. Она прыгает на кочку 1, что требует 1 единицу энергии, и у неё остаётся 1 единица энергии. На кочке 1 девочка получает 1 единицу энергии, и у неё становится 2 единицы энергии. Затем она прыгает с кочки 1 на кочку 3, потратив 2 единицы энергии, и у неё становится 0 энергии. Приземлившись на кочку 3, Красная Шапочка получает 1 единицу энергии, этого достаточно, чтобы перепрыгнуть с кочки 3 на поляну в точке 4, после чего у Красной Шапочки останется 0 единиц энергии. Во втором примере у Красной Шапочки первоначально только 1 единица энергии, поэтому она может прыгнуть только на кочку 1, но значение a1=−1, то есть после приземления на кочку 1 у Красной Шапочки энергия станет отрицательной и она не сможет продолжить свой путь.
Ввод
2
3
1
-1
1
Вывод
0
Ввод
1
4
-1
100
-1
-1
Вывод
-1
Голосование за лучший ответ
Великий человек идёт к вам! Трепещите! Мудрец (12521) 1 месяц назад
подержи моё пиво
и я на раз два всё решу
MakarУченик (216) 1 месяц назад
Если я его возьму, к вашему сожалению вы его больше не увидите : )
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))
MakarУченик (216) 1 месяц назад
Спасибо огромное!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Мак вродеУченик (115) 1 месяц назад
это на каком языке?
Оцелот 2354 Знаток (298) 1 месяц назад
(ответ нейросети)
def max_energy(e, n, a):
"""
Функция для определения максимального количества энергии у Красной Шапочки
при достижении клюквенной поляны.

Args:
e: Первоначальный запас энергии.
n: Количество кочек.
a: Список значений энергии, получаемой на каждой кочке.

Returns:
Максимальное количество энергии, которое останется у Красной Шапочки,
или -1, если она не сможет достичь поляны.
"""

# Инициализация динамического программирования
dp = [0] * (n + 2)
dp[0] = e

# Проход по кочкам
for i in range(1, n + 1):
# Если можно допрыгнуть до текущей кочки
if dp[i - 1] >= i:
# Обновление максимального количества энергии на кочке
dp[i] = max(dp[i], dp[i - 1] + a[i - 1])

# Проверка возможности достижения поляны
if dp[n] >= n + 1:
# Если можно достичь поляны, то возвращаем максимальную энергию на поляне
return dp[n] - (n + 1)
else:
# Если нельзя достичь поляны, то возвращаем -1
return -1

# Получение входных данных
e = int(input())
n = int(input())
a = [int(input()) for _ in range(n)]

# Вывод результата
print(max_energy(e, n, a))
Лёша РазинковУченик (101) 1 месяц назад
продаю ответы на олимпиаду. цена 40 рублей тг:suzukivod2
Вячеслав Мишуров Ученик (160) 1 месяц назад
продам ответы на 415 баллов в тг. Dear_Darkkk
Антон рвп Ученик (120) 1 месяц назад
Продам ответы на 490 баллов
50 руб.
тг. sneja707
Похожие вопросы