Мониторинг сети: агрегация пакетов с временными метками

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