Реконструкция поездок на основе логов датчиков
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