مراقبة الشبكة: تجميع الحزم مع الطوابع الزمنية
Rust
Hard
structs
مهمة «مراقبة الشبكة: تجميع الحزم مع الطوابع الزمنية»
قم بتطوير بنية `Packet` لتخزين بيانات حزمة الشبكة: المعرف (u32)، الحجم (u32)، الطابع الزمني (u64، بالمللي ثانية). قم بتنفيذ دالة `aggregate` التي تأخذ متجهًا من الحزم وتعيد متجهًا من بنى `AggregatedInfo`: الفاصل الزمني (start_ts، end_ts، حيث الفرق <= 1000 مللي ثانية)، عدد الحزم، الحجم الإجمالي، متوسط الحجم (مقربًا إلى أقرب عدد صحيح). يجب ألا تتداخل الفواصل الزمنية وتغطي جميع الحزم. إذا لم تكن هناك حزم، قم بإعادة متجه فارغ. من المضمون أن الحزم مرتبة بالفعل حسب الطابع الزمني تصاعديًا.
تنسيق الإدخال
السطر الأول: عدد صحيح n (0 <= n <= 10000) — عدد الحزم. ثم n سطر، كل سطر: id size timestamp (أعداد صحيحة، مفصولة بمسافة).
تنسيق الإخراج
لكل فترة زمنية، قم بإخراج سطر: start_ts end_ts count total_size avg_size. إذا لم تكن هناك حزم، قم بإخراج 'No data'.
أمثلة
مثال 1
الإدخال
1 10
الإخراج
30
main.rs