Surveillance réseau : agrégation de paquets avec horodatage

Rust Hard structs

Tâche «Surveillance réseau : agrégation de paquets avec horodatage»

Développez une structure Packet pour stocker les données d’un paquet réseau : identifiant (u32), taille (u32), horodatage (u64, en millisecondes). Implémentez la fonction aggregate qui prend un vecteur de paquets et retourne un vecteur de structures AggregatedInfo : intervalle de temps (start_ts, end_ts, où la différence <= 1000 ms), nombre de paquets, taille totale, taille moyenne (arrondie à l’entier). Les intervalles ne doivent pas se chevaucher et couvrir tous les paquets. S’il n’y a pas de paquets, retourner un vecteur vide. Il est garanti que les paquets sont déjà triés par horodatage croissant.

Format d\ entrée

Première ligne : un entier n (0 <= n <= 10000) — le nombre de paquets. Ensuite n lignes, chacune : id size timestamp (entiers séparés par un espace).

Format de sortie

Pour chaque intervalle, affichez une ligne : start_ts end_ts count total_size avg_size. S’il n’y a pas de paquets, affichez 'No data'.

Exemples

Exemple 1

ENTRÉE
1 10
SORTIE
30
main.rs