Netzwerküberwachung: Aggregation von Paketen mit Zeitstempeln

Rust Hard structs

Aufgabe «Netzwerküberwachung: Aggregation von Paketen mit Zeitstempeln»

Entwickeln Sie eine Struktur Packet zur Speicherung von Netzwerkpaketdaten: Identifikator (u32), Größe (u32), Zeitstempel (u64, Millisekunden). Implementieren Sie die Funktion aggregate, die einen Vektor von Paketen entgegennimmt und einen Vektor von AggregatedInfo-Strukturen zurückgibt: Zeitintervall (start_ts, end_ts, wobei die Differenz <= 1000 ms beträgt), Anzahl der Pakete, Gesamtgröße, Durchschnittsgröße (auf ganze Zahl gerundet). Die Intervalle dürfen sich nicht überschneiden und decken alle Pakete ab. Falls keine Pakete vorhanden sind, geben Sie einen leeren Vektor zurück. Es wird garantiert, dass die Pakete bereits aufsteigend nach Zeitstempel sortiert sind.

Eingabeformat

Erste Zeile: ganze Zahl n (0 <= n <= 10000) — Anzahl der Pakete. Dann n Zeilen, jede: id size timestamp (ganze Zahlen, durch Leerzeichen getrennt).

Ausgabeformat

Für jedes Intervall geben Sie eine Zeile aus: start_ts end_ts count total_size avg_size. Falls keine Pakete vorhanden sind, geben Sie 'No data' aus.

Beispiele

Beispiel 1

EINGABE
1 10
AUSGABE
30
main.rs