Monitoramento de rede: agregação de pacotes com carimbos de data/hora

Rust Hard structs

Tarefa «Monitoramento de rede: agregação de pacotes com carimbos de data/hora»

Desenvolva uma estrutura Packet para armazenar dados de pacote de rede: identificador (u32), tamanho (u32), carimbo de data/hora (u64, milissegundos). Implemente a função aggregate, que recebe um vetor de pacotes e retorna um vetor de estruturas AggregatedInfo: intervalo de tempo (start_ts, end_ts, onde a diferença <= 1000 ms), quantidade de pacotes, tamanho total, tamanho médio (com arredondamento para inteiro). Os intervalos não devem se sobrepor e cobrem todos os pacotes. Se não houver pacotes, retorne um vetor vazio. É garantido que os pacotes já estão ordenados por carimbo de data/hora em ordem crescente.

Formato de Entrada

Primeira linha: um inteiro n (0 <= n <= 10000) — quantidade de pacotes. Em seguida, n linhas, cada uma: id size timestamp (números inteiros separados por espaço).

Formato de Saída

Para cada intervalo, imprima uma linha: start_ts end_ts count total_size avg_size. Se não houver pacotes, imprima 'No data'.

Exemplos

Exemplo 1

ENTRADA
1 10
SAÍDA
30
main.rs