Когда турист добежит до цели

тема: Моделирование процессов · уровень: базовый

Условие

В школьной туристической секции устроили челлендж: за несколько дней набрать суммарно хотя бы G метров пробежки.

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

Нужно определить, на какой по счёту день это впервые произойдёт. Если за все дни суммарно не получится — выведи -1.

Формат ввода

В первой строке даны два целых числа n и G — количество дней и цель в метрах. Во второй строке дано n целых чисел a1, a2, ..., an — пробежка по дням.

Формат вывода

Выведи одно целое число — номер первого дня, когда сумма a1 + ... + ai >= G. Если такого дня нет, выведи -1.

Ограничения

Пример

Ввод:

5 10
1 2 3 4 5

Вывод:

4

Как решать — идея подхода

Приём: Накопление суммы (симуляция)

Ключевое наблюдение: нас интересует первый день, когда накопленная сумма a1 + ... + ai стала не меньше G. Значит, достаточно пройти дни по порядку и вести текущий итог — как только он пересёк порог, ответ найден.

Почему работает симуляция: каждый следующий день просто добавляет ai к уже набранному. Никаких перестановок или сложных выборов нет, порядок фиксирован, поэтому «честно считать слева направо» — оптимально и быстрее всего.

План решения:

Сложность: O(n) по времени и O(1) по памяти (можно даже не хранить весь список, если читать числа подряд).

Частая ошибка: перепутать нумерацию дней. В цикле индекс в Python обычно начинается с 0, но в ответе нужен день, начиная с 1, поэтому печатают i + 1 (или используют enumerate(..., start=1)).

Разберись руками

Есть 5 дней и цель 10 метров. Каждый день добавляем пробежку этого дня к общей сумме. Нужно найти первый день, когда общая сумма станет не меньше 10.

Идея: Идём по дням по порядку и ведём «накопленную сумму». После каждого дня проверяем, достигли ли цель. Как только впервые достигли — запоминаем номер этого дня и останавливаемся. Если дошли до конца и ни разу не достигли — ответ -1.

Решить задачу с автопроверкой на Python →

Куда дальше