Найти подотрезок с суммой S

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

Submit solution


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

Problem type
Allowed languages
C++, Python

Аудитор анализирует последовательность финансовых изменений по дням. Для отчёта ему нужно указать любой непрерывный период, в котором суммарное изменение равно ровно S.

Дана последовательность из n чисел и значение S. Требуется найти любой подотрезок, сумма элементов которого равна ровно S, и вывести его границы l и r в нумерации с 1. Если такого периода не существует, выведите -1.

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

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

Во второй строке заданы n целых чисел a_i — изменения по дням.

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

Выведите два числа l и r — границы любого подходящего подотрезка. Если подходящего подотрезка нет, выведите -1.

Ограничения

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

Примеры

Пример 1

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

6 9
1 2 3 4 5 6

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

2 4

Пояснение

Подотрезок [2,3] (элементы 2,3,4) даёт сумму 9; подойдёт любой такой отрезок.

Пример 2

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

1 5
-37

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

-1

Комментарии

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