Кратчайший подотрезок с суммой не меньше S

Просмотр в формате PDF

Submit solution


Очки: 140
Ограничение по времени: 2.0s
Ограничение по памяти: 256M

Автор:
Problem type
Allowed languages
C++, Python

Альпинист движется по маршруту, разбитому на n последовательных участков. Для каждого участка известен положительный набор высоты a_i.

Требуется найти самый короткий непрерывный отрезок маршрута, на котором суммарный набор высоты не меньше S.

Иными словами, нужно найти минимальную длину такого подотрезка [l, r], что сумма

a_l + a_{l+1} + ... + a_r >= S.

Если подходящего участка маршрута не существует, выведите -1.

Входные данные

В первой строке даны два целых числа n и S — количество участков маршрута и требуемый набор высоты.

Во второй строке даны n целых чисел a_1, a_2, ..., a_n, где a_i — набор высоты на i-м участке.

Выходные данные

Выведите одно целое число — минимальную длину непрерывного участка маршрута, на котором альпинист набирает не менее S высоты.

Если такого участка нет, выведите -1.

Ограничения

  • 1 <= n <= 2 * 10^5
  • 1 <= S <= 10^14
  • 1 <= a_i <= 10^9

Примеры

Пример 1

Входные данные

1 5
5

Выходные данные

1
Пример 2

Входные данные

5 7
1 2 3 4 5

Выходные данные

2

Комментарии

Еще нет ни одного комментария.