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

Помогите с задачей!!!!

ef effe Ученик (88), открыт 1 неделю назад
Недавно Люба купила себе очень интересную книгу. Она знает, что сможет прочитать её ровно за t секунд. Так как книга очень интересная, Люба хочет прочитать её как можно быстрее.

Но в каждые из n суток у неё есть очень важные дела, которые она должна выполнять. Продолжительность занятости Любы в i-е сутки составляет ai секунд. Всё остальное время она может тратить на прочтение книги.

Помогите Любе определить минимальный номер суток, в которые она может закончить читать книгу.

Гарантируется, что номер этих суток не превосходит n.

Напомним, что в сутках 86400 секунд.

Входные данные
В первой строке входных данных задано два целых числа n и t (1 ≤ n ≤ 100, 1 ≤ t ≤ 106) — количество суток и время, необходимое для прочтения книги.

В следующей строке задано n целых чисел ai (0 ≤ ai ≤ 86400) — продолжительности занятости Любы в i-е сутки.

Выходные данные
В единственной строке входных данных выведите минимальный номер суток, в которые Люба сможет прочитать книгу.

Гарантируется, что номер этих суток не превосходит n.

Примеры
Входные данныеСкопировать
2 2
86400 86398
Выходные данныеСкопировать
2
Входные данныеСкопировать
2 86400
0 86400
Выходные данныеСкопировать
1
2 ответа
Kami Мастер (1559) 1 неделю назад
ответ люба и 5 негров
Kottt Ученик (138) 1 неделю назад
Чтобы решить эту задачу, нужно определить минимальный номер суток, к которым Люба сможет прочитать книгу, учитывая её занятость каждый день.
Алгоритм:
1. Инициализация суммы свободного времени: Создадим переменную для накопления свободного времени.
2. Проход по каждому дню: Для каждого дня вычисляем свободное время как разницу между общим количеством секунд в сутках (86400) и занятым временем в этот день.
3. Проверка накопленного времени: После добавления свободного времени каждого дня проверяем, достигла ли сумма необходимого времени для прочтения книги. Если да, выводим номер текущего дня и завершаем выполнение.

n, t = map(int, input().split())
a = list(map(int, input().split()))
sum_time = 0
for i in range(n):
sum_time += 86400 - a[i]
if sum_time >= t:
print(i + 1)
break

Объяснение:
- Чтение входных данных: Сначала считываем количество дней n и необходимое время t для прочтения книги. Затем считываем список занятого времени в каждый день.
- Накопление свободного времени: Для каждого дня вычисляем свободное время и добавляем его к общей сумме.
- Проверка условия: Как только накопленное свободное время достигает или превышает t, выводим номер текущего дня (увеличиваем индекс на 1, так как дни нумеруются с 1) и завершаем программу.
Этот подход гарантирует, что мы находим минимальный день, когда Люба сможет закончить чтение книги, эффективно обрабатывая входные данные за линейное время O(n).
Похожие вопросы