20. ضغط التسلسل باستخدام std::map و std::vector

C++ Medium STL

مهمة «20. ضغط التسلسل باستخدام std::map و std::vector»

إليك نص مهمة البرمجة مترجمًا إلى العربية:

تم إعطاء تسلسل من الأعداد الصحيحة. يجب تنفيذ ضغط للتسلسل: استبدال كل رقم برقم ترتيبه عند أول ظهور (بدءًا من 1). يجب أن تكون الأرقام الترتيبية فريدة لكل رقم. استخدم <code>std::map</code> لتخزين تطابق الرقم ورقمه الترتيبي، ثم أخرج النتيجة بترتيب التسلسل الأصلي.

تنسيق الإدخال

في السطر الأول عدد صحيح N (1 ≤ N ≤ 10^6). في السطر الثاني N من الأعداد الصحيحة، مفصولة بمسافات، قيم الأعداد تتراوح من -10^9 إلى 10^9.

تنسيق الإخراج

أخرج N عددًا صحيحًا — الأرقام الترتيبية لكل رقم في التسلسل الأصلي، مفصولة بمسافة.

أمثلة

مثال 1

الإدخال
5 1 2 1 3 2
الإخراج
1 2 1 3 2

مثال 2

الإدخال
2 1 3.0 2 4.0 5.0
الإخراج
28.27 20.00

مثال 3

الإدخال
3 100 100 100
الإخراج
1 1 1

مثال 4

الإدخال
1 2 2.5 3.5
الإخراج
1

مثال 5

الإدخال
6 ADD Write report 3 ADD Fix bug 5 ADD Update docs 2 PENDING COMPLETE Fix bug PENDING
الإخراج
Fix bug, Write report, Update docs Write report, Update docs
main.cpp