كان هناك طفل يُدعى Kino يحب السفر كثيرًا، وقد زار أماكن غريبة عديدة. وفي يوم من الأيام وصل إلى جسر، فوجد عليه سيارات مكشوفة كثيرة. ولسوء الحظ كان الجسر ضيقًا، لا يتسع عرضه إلا لسيارة واحدة، ولم تفسح السيارات الطريق لبعضها، فتكدست السيارات القادمة من الاتجاهين ولم يعد بإمكانها العبور.
لاحقًا أضاف البنّاء إلى الجسر ميزة جديدة: يمكن تدوير جزء منه بمقدار $180$ درجة، فتنعكس أوضاع السيارات المكشوفة الموجودة على ذلك الجزء، كما في الشكل التالي:
الشكل 1. تصبح السيارات $3,2,1$ بالترتيب $1,2,3$ بعد التدوير.
كما يوضح الشكل، أدى التقاء السيارات $3,2,1$ بالسيارتين $4,5$ على الجسر إلى ازدحام مروري. يمكن حينئذ تدوير الجزء الذي يحمل $3,2,1$، فيصبح ترتيب السيارات على الجسر $1,2,3,4,5$، وتصبح اتجاهات سيرها متطابقة، فتستطيع مغادرة الجسر. هذا مجرد مثال بسيط؛ فالوضع على الجسر الحقيقي أعقد بكثير، ويحتاج إلى عمليات تدوير عديدة للوصول إلى ترتيب $1,2,3,4,5$.
لكن المصمم سافر هو الآخر بعد تصميم الجسر، ولم يكن أي من السكان الباقين يعرف كيف يشغّل هذا الجسر العجيب. لذلك ازدادت الفوضى عليه حتى وصل ذات يوم إلى وضعه الحالي. ولكي يعبر Kino الجسر، وجد بجانبه جهاز التحكم ودليل الاستعمال، واكتشف مجددًا طريقة تشغيله. وبمساعدة السكان المجاورين نجح في ترتيب السيارات المكشوفة على الجسر بالشكل $1,2,3,\ldots$، وجعل اتجاهاتها متطابقة. هل تعرف كيف فعل ذلك؟
الإدخال
هذه مسألة من نوع تسليم الإجابات فقط. وُضعت ملفات الإدخال من convertible1.in إلى convertible10.in في مجلد المستخدم. يحتوي السطر الأول من ملف الإدخال على عدد السيارات المكشوفة على الجسر $n$، وهي مرقمة $1,2,\ldots,n$. ويصف السطر الثاني مواقع السيارات واتجاهاتها بتسلسل من القيم $+i$ أو $-i$. وجود $-i$ في الموضع $j$ يعني أن السيارة $i$ موجودة في الموضع $j$ من الجسر وتتجه إلى اليمين؛ ووجود $+i$ في الموضع $j$ يعني أنها موجودة فيه وتتجه إلى اليسار.
الإخراج
عليك وضع ملفات الإخراج من convertible1.out إلى convertible10.out في مجلد المستخدم، ولا يلزم تسليم برنامج. يحتوي السطر الأول من ملف الإخراج على عدد عمليات التدوير $m$. ويصف كل من الأسطر $m$ التالية عملية تدوير واحدة، بذكر موضعي الحد الأيسر والحد الأيمن. يجب أن يضمن إخراجك أن يصبح التسلسل النهائي $1,2,3,\ldots,n$، وليس $-1,-2,-3,\ldots,-n$ أو أي تسلسل آخر.
أمثلة
الإدخال 1
5 -3 -2 -1 4 5
الإخراج 1
1 1 3
المهام الفرعية
الدرجة الكاملة لكل حالة اختبار هي $10$ نقاط، وتعتمد درجتك على نسبة جودة إجابتك إلى جودة الإجابة المرجعية.
كيفية اختبار برنامجك
تتوفر لهذه المسألة أداة فحص بيانات الإخراج convertible_c، وتُشغّل كما يلي:
#./convertible_c 3
وهذا يفحص ما إذا كان الملف convertible3.out صالحًا.