Аналитика сессий пользователей
Просмотр в формате PDFАналитик веб-сервиса обрабатывает лог пользовательской активности и хочет посчитать суммарное время сессий для каждого пользователя.
В логе записаны события двух типов: открытие сессии LOGIN и завершение сессии LOGOUT. Каждое событие содержит момент времени ts — количество секунд от начала суток, а также идентификатор пользователя uid.
Сессия пользователя начинается в момент LOGIN и заканчивается ближайшим следующим событием LOGOUT этого же пользователя. Гарантируется, что корректные сессии одного и того же пользователя не должны пересекаться по смыслу, однако в логе возможны нештатные записи, которые нужно обрабатывать по правилам ниже.
Правила обработки событий:
- если встретилось событие
LOGOUT, а у этого пользователя нет открытой сессии, такое событие игнорируется; - если встретилось событие
LOGIN, а у этого пользователя уже есть открытая сессия, такое событие игнорируется, текущая сессия продолжается; - если после обработки всего лога у пользователя осталась открытая сессия, считается, что она продолжается до момента
86400.
События в логе заданы в неубывающем порядке времени. Если у нескольких событий одинаковый ts, их нужно обрабатывать в том порядке, в котором они записаны во входных данных.
Необходимо вывести всех пользователей, у которых была хотя бы одна корректно начатая сессия, и для каждого указать суммарную длительность всех его сессий.
Входные данные
Первая строка содержит целое число n — количество событий в логе.
Каждая из следующих n строк содержит описание одного события в формате ts type uid, где:
ts— момент времени в секундах от начала суток;type— строкаLOGINилиLOGOUT;uid— идентификатор пользователя.
Выходные данные
Выведите информацию обо всех пользователях, у которых была хотя бы одна корректно начатая сессия.
Для каждого такого пользователя в отдельной строке выведите два числа: uid total, где total — суммарное время всех его сессий в секундах.
Пользователей нужно выводить в порядке возрастания uid.
Ограничения
1 <= n <= 2 * 10^50 <= ts <= 863991 <= uid <= 10^9
Примеры
Пример 1
Входные данные
8
10 LOGIN 1
20 LOGOUT 1
20 LOGIN 2
20 LOGOUT 2
30 LOGOUT 3
40 LOGIN 3
50 LOGIN 3
60 LOGOUT 3
Выходные данные
1 10
2 0
3 20
Пример 2
Входные данные
10
0 LOGIN 5
0 LOGIN 5
1 LOGOUT 5
1 LOGOUT 5
2 LOGIN 7
2 LOGIN 8
2 LOGOUT 7
2 LOGOUT 8
86399 LOGIN 9
86399 LOGIN 9
Выходные данные
5 1
7 0
8 0
9 1
Комментарии