- Описание
- Отправленные решения
46. Пиковая нагрузка
Сайт некоторого маркетплейса одновременно могут посещать сотни тысяч пользователей. Будем считать нагрузку сайта в некоторый момент времени пиковой, если в этот момент было открыто максимальное количество пользовательских сессий за весь период наблюдений.
Пользовательской сессией называется непрерывный промежуток времени, в течение которого пользователь проявляет активность на сайте. Пользовательская сессия открывается в момент, когда пользователь, впервые пришедший на сайт (или долго отсутствовавший на сайте), совершает любое действие, например, загружает страницу с каталогом товаров. Сессия продолжается до тех пор, пока пользователь совершает какие-то действия на сайте, и закрывается, когда с момента последнего действия пользователя проходит промежуток времени, равный 30 минутам — так называемый период неактивности. Каждое новое действие пользователя на сайте обновляет момент времени, с которого отсчитывается период неактивности пользователя. Если пользователь после окончания сессии вновь совершит какое-то действие на сайте, это действие откроет новую сессию этого пользователя.
На основании данных о действиях пользователей, представленных во входном файле log.tsv
, определите промежутки времени, в течение которых на сайте наблюдалась пиковая нагрузка.
Формат ввода
Вашему решению доступен файл log.tsv
в формате TSV с заголовком, содержащий данные о действиях, совершенных пользователями на сайте. Количество строк в файле 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