Мониторинг сети: агрегация пакетов с временными метками
Rust
Сложный
structs
Задача «Мониторинг сети: агрегация пакетов с временными метками»
Разработайте структуру Packet для хранения данных сетевого пакета: идентификатор (u32), размер (u32), временная метка (u64, миллисекунды). Реализуйте функцию aggregate, которая принимает вектор пакетов и возвращает вектор структур AggregatedInfo: временной интервал (start_ts, end_ts, где разница <= 1000 мс), количество пакетов, общий размер, средний размер (с округлением до целого). Интервалы не должны пересекаться и покрывают все пакеты. Если пакетов нет, вернуть пустой вектор. Гарантируется, что пакеты уже отсортированы по временной метке по возрастанию.
Формат ввода
Первая строка: целое n (0 <= n <= 10000) — количество пакетов. Затем n строк, каждая: id size timestamp (целые числа, разделённые пробелом).
Формат вывода
Для каждого интервала выводите строку: start_ts end_ts count total_size avg_size. Если пакетов нет, выводите 'No data'.
Примеры
Пример 1
ВВОД
1 10
ВЫВОД
30
main.rs