Реконструкция поездок на основе логов датчиков

Kotlin Сложный data classes

Задача «Реконструкция поездок на основе логов датчиков»

Имеются логи датчиков пассажирских поездок: каждое событие — это запись о входе/выходе пассажира с указанием времени (timestamp) и ID поездки. Требуется восстановить данные о каждой поездке: ID поездки, количество пассажиров (максимальное число одновременно находящихся в транспорте), общее количество пассажиров, совершивших поездку, и длительность поездки (разница между последним и первым событием). Если для поездки не хватает событий (например, только вход или только выход), то такая поездка считается некорректной и игнорируется. Все времена заданы в секундах от начала суток. Вывести список поездок в порядке возрастания ID.

Формат ввода

В первой строке целое число N (1 ≤ N ≤ 10^5) — количество событий. Далее в N строках: каждое событие в формате <ID_поездки> <тип_события> <время>. Тип события — 'IN' (вход) или 'OUT' (выход). ID поездки — целое число от 1 до 10^9. Время — целое число от 0 до 86400.

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

Для каждой корректной поездки вывести строку: ID_поездки количество_пассажиров_макс общее_количество_пассажиров длительность_в_секундах. Если корректных поездок нет, вывести 'NO TRIPS'.

Примеры

Пример 1

ВВОД
6 1 IN 100 1 IN 150 1 OUT 200 2 IN 10 2 OUT 20 3 OUT 5
ВЫВОД
1 2 2 100 2 1 1 10

Пример 2

ВВОД
4 1 IN 0 1 OUT 10 2 IN 5 2 OUT 15
ВЫВОД
1 1 1 10 2 1 1 10

Пример 3

ВВОД
10
ВЫВОД
NO TRIPS
main.kt