46. Пиковая нагрузка

Не решаласьЛёгкая

Сайт некоторого маркетплейса одновременно могут посещать сотни тысяч пользователей. Будем считать нагрузку сайта в некоторый момент времени TT пиковой, если в этот момент было открыто максимальное количество пользовательских сессий за весь период наблюдений.

Пользовательской сессией называется непрерывный промежуток времени, в течение которого пользователь проявляет активность на сайте. Пользовательская сессия открывается в момент, когда пользователь, впервые пришедший на сайт (или долго отсутствовавший на сайте), совершает любое действие, например, загружает страницу с каталогом товаров. Сессия продолжается до тех пор, пока пользователь совершает какие-то действия на сайте, и закрывается, когда с момента последнего действия пользователя проходит промежуток времени, равный 30 минутам — так называемый период неактивности. Каждое новое действие пользователя на сайте обновляет момент времени, с которого отсчитывается период неактивности пользователя. Если пользователь после окончания сессии вновь совершит какое-то действие на сайте, это действие откроет новую сессию этого пользователя.

На основании данных о действиях пользователей, представленных во входном файле log.tsv, определите промежутки времени, в течение которых на сайте наблюдалась пиковая нагрузка.

Формат ввода

Вашему решению доступен файл log.tsv в формате TSV с заголовком, содержащий данные о действиях, совершенных пользователями на сайте. Количество строк в файле \le 500000. Строки данных имеют следующий формат:

  • userid — идентификатор пользователя;
  • timestamp — дата и время события в формате ISO;
  • action — действие, совершенное пользователем, может принимать одно из значений:
    • mainpage — вход на главную страницу сайта;
    • search — поиск товаров в каталоге;
    • product — открытие страницы с карточкой продукта;
    • category — открытие страницы с карточкой категории;
    • cart — страница добавления товара в корзину;
    • checkout — оформление заказа;
    • confirmation — подтверждение заказа;
  • value — стоимость добавляемого товара (для события cart), либо сумма заказа (для событий checkout и confirmation);
  • testids — идентификаторы тестовых выборок, в которых находится пользователь.

Все поля за исключением поля testids гарантированно заполнены для каждой записи лога. Значение поля testids может быть пустым.

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

Промежутки времени, в течение которых на сайте было открыто максимальное количество сессий за весь период времени в файле log.tsv, по одному на каждой строке.

Каждая выводимая строка должна содержать две даты в формате ISO, разделенные одним пробелом. Выводимые данные должны быть упорядочены по возрастанию моментов начала промежутков времени.

Примечание

Все поля за исключением поля testids гарантированно заполнены для каждой записи лога. Значение поля testids может быть пустым.

Ограничения

Ограничение времени

10 с

Ограничение памяти

512 МБ

Пример 1

Ввод
userid	timestamp	action	value	testids
user_1	2022-08-22T10:00:00	product	0	13534;23345;23463;25662
user_2	2022-08-22T10:04:00	mainpage	0	13534;23346;23464;25661
user_1	2022-08-22T10:07:00	category	0	13534;23345;23463;25662
user_2	2022-08-22T10:17:00	product	0	13534;23346;23464;25661
user_1	2022-08-22T10:23:00	cart	12370.0	13534;23345;23463;25662
user_2	2022-08-22T10:45:00	search	0	13534;23346;23464;25661
user_1	2022-08-22T10:53:00	checkout	12370.0	13534;23345;23463;25662
user_2	2022-08-22T12:10:00	product	0	13534;23346;23464;25661
user_1	2022-08-22T12:14:00	confirmation	12370.0	13534;23345;23463;25662
user_2	2022-08-22T12:27:00	category	0	13534;23346;23464;25661
Вывод
2022-08-22T10:04:00 2022-08-22T11:15:00
2022-08-22T12:14:00 2022-08-22T12:44:00

Пример 2

Ввод
userid	timestamp	action	value	testids
user_1	2022-08-22T10:00:00	mainpage	0	23346;23464;25661
user_2	2022-08-22T10:04:00	search	0	23346;23464;25662
user_3	2022-08-22T10:07:00	product	0	18392;25661
user_2	2022-08-22T10:17:00	category	0	23346;23464;25662
user_1	2022-08-22T10:23:00	search	0	23346;23464;25661
user_3	2022-08-22T10:45:00	category	0	18392;25661
user_3	2022-08-22T10:53:00	product	0	18392;25661
user_3	2022-08-22T12:10:00	checkout	3820.0	18392;25661
user_1	2022-08-22T12:14:00	search	0	23346;23464;25661
user_2	2022-08-22T12:27:00	product	0	23346;23464;25662
Вывод
2022-08-22T10:07:00 2022-08-22T10:37:00
2022-08-22T10:45:00 2022-08-22T10:47:00
2022-08-22T12:27:00 2022-08-22T12:40:00
Нужно войти, чтобы отправить решение.Войти