Monitoreo de red: agregación de paquetes con marcas de tiempo
Rust
Hard
structs
Tarea «Monitoreo de red: agregación de paquetes con marcas de tiempo»
Desarrolle una estructura Packet para almacenar datos de un paquete de red: identificador (u32), tamaño (u32), marca de tiempo (u64, milisegundos). Implemente la función aggregate, que recibe un vector de paquetes y devuelve un vector de estructuras AggregatedInfo: intervalo de tiempo (start_ts, end_ts, donde la diferencia <= 1000 ms), cantidad de paquetes, tamaño total, tamaño promedio (redondeado al entero). Los intervalos no deben superponerse y cubren todos los paquetes. Si no hay paquetes, devolver un vector vacío. Se garantiza que los paquetes ya están ordenados por marca de tiempo ascendente.
Formato de entrada
Primera línea: un entero n (0 <= n <= 10000) — cantidad de paquetes. Luego n líneas, cada una: id size timestamp (enteros separados por espacio).
Formato de salida
Para cada intervalo, imprimir una línea: start_ts end_ts count total_size avg_size. Si no hay paquetes, imprimir 'No data'.
Ejemplos
Ejemplo 1
ENTRADA
1 10
SALIDA
30
main.rs