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