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