https://pastein.ru/t/jli

  скопируйте уникальную ссылку для отправки

Загрузка данных


Для решения задачи о Красной Шапочке, которая собирает клюкву, мы можем использовать динамическое программирование. Основная идея заключается в том, чтобы отслеживать максимальную энергию, которую Красная Шапочка может иметь на каждом из кочек, учитывая затраты энергии на прыжки и получаемую энергию.

Вот пример кода на Python, который решает данную задачу:

def max_energy(E, N, energy_changes):
    # Создаем массив для хранения максимальной энергии на каждом кочке
    dp = [-1] * (N + 2)  # -1 означает, что точка недоступна
    dp[0] = E  # Начальная энергия на берегу

    for i in range(N + 1):
        if dp[i] == -1:
            continue  # Если в этой точке энергии нет, пропускаем

        # Пытаемся прыгнуть на все возможные кочки от текущей
        for j in range(i + 1, N + 2):
            cost = j - i  # Стоимость прыжка
            if dp[i] >= cost:  # Если хватает энергии на прыжок
                new_energy = dp[i] - cost + (energy_changes[j - 1] if j <= N else 0)
                dp[j] = max(dp[j], new_energy)  # Обновляем максимальную энергию

    return dp[N + 1] if dp[N + 1] != -1 else -1


# Чтение входных данных
E = int(input().strip())
N = int(input().strip())
energy_changes = [int(input().strip()) for _ in range(N)]

# Вычисление и вывод результата
result = max_energy(E, N, energy_changes)
print(result)