Сессии пользователей по потоку событий
Условие
Поток событий аналитики: первая строка n gap, дальше n строк <логин> <время в секундах>. События пришли не по порядку (разные серверы, задержки доставки).
Сессия пользователя это серия его событий, в которой соседние по времени события отстоят друг от друга не больше чем на gap секунд. Если разрыв больше gap, начинается новая сессия. Одинаковые времена допустимы.
Для каждого пользователя в порядке возрастания кодов символов логина выведи <логин> <число сессий> <длительность самой длинной сессии> (длительность это время последнего события сессии минус время первого).
n ≤ 2000, время до 10⁹.
Пример
6 1800
anna 100
boris 50
anna 1000
anna 5000
boris 1850
anna 6800
anna 2 1800
boris 1 1800
Как подойти
Подсказки: 2
- Сгруппируй времена по пользователю и отсортируй каждую группу.
- Новая сессия, когда разница соседних времён строго больше
gap.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Топ эндпоинтов по access-логу с нормализацией маршрутов
Следующий вопрос
Код-ревью: выгрузка и загрузка больших файлов