هذه مسألة تفاعلية. تذكّر تفريغ مخزن الإخراج المؤقت (flush) بعد كل عملية طباعة. لتفريغ الإخراج، يمكنك استخدام:
fflush(stdout)أوcout.flush()في C/C++؛System.out.flush()في Java و Kotlin؛sys.stdout.flush()في Python.

مفهوم اللعبة، برسم توضيحي من Nano Banana Pro.
أنت تشارك في لعبة استراتيجية تعتمد على تناوب الأدوار تُعرف باسم Revolver Roulette («روليت المسدس الدوّار»).
تبدأ اللعبة بمسدس دوّار محشوّ بـ $6$ رصاصات بالضبط. كل رصاصة تكون إما حيّة (live) أو فارغة/صوتية (blank) بشكل مستقل وباحتمال متساوٍ. يعرف كلا اللاعبين دائمًا العدد الحالي للرصاصات الحية والفارغة المتبقية في الأسطوانة، لكن الترتيب الدقيق لها غير معروف.
يبدأ كل لاعب بـ $5$ نقاط صحة (HP) وعنصرين ($2$ items). إذا انخفضت نقاط صحة أحد اللاعبين إلى $0$ أو أقل، يتم إقصاؤه ويفوز اللاعب الآخر. يتناوب اللاعبان على تنفيذ الإجراءات.
سير الدور
خلال دوره، يمكن للاعب النشط تنفيذ أي عدد من الإجراءات التالية:
- استخدام أي عنصر.
- تنفيذ أي إجراء إطلاق نار.
لا ينتهي الدور إلا عندما يؤدي إجراء إطلاق نار إلى انتقال الدور إلى اللاعب الآخر، أو عندما يتم إقصاء أحد اللاعبين.
إجراءات إطلاق النار
يجب على اللاعب النشط اختيار أحد إجراءات إطلاق النار التالية:
Fire at Opponent: يطلق اللاعب النشط الرصاصة التالية نحو اللاعب الآخر. إذا كانت حيّة، يخسر اللاعب الآخر $1$ HP. وبغض النظر عن نوع الرصاصة، ينتقل الدور إلى اللاعب الآخر.Fire at Self: يطلق اللاعب النشط الرصاصة التالية نحو نفسه. إذا كانت حيّة، يخسر اللاعب النشط $1$ HP وينتقل الدور إلى اللاعب الآخر. وإلا، إذا كانت فارغة، يحتفظ اللاعب النشط بدوره ويواصل تنفيذ الإجراءات.
العناصر
عند استخدام عنصر، يتم استهلاكه ويحتفظ اللاعب النشط بدوره بغض النظر عن نوع العنصر. العناصر مرئية لكلا اللاعبين. عندما يحصل لاعب على عنصر جديد (بما في ذلك كل عنصر من العناصر الابتدائية)، يتم اختياره عشوائيًا بانتظام من الأنواع الأربعة التالية:
Dummy: إطلاق الرصاصة التالية على دمية تدريب. يستهلك هذا الرصاصة ولا يُعتبر إجراء إطلاق نار.Magnifier: استراق النظر إلى الرصاصة التالية لكشف ما إذا كانت حيّة أم فارغة. يعرف كلا اللاعبين النتيجة.Converter: قلب نوع الرصاصة التالية (حيّة $\leftrightarrow$ فارغة). يلاحظ كلا اللاعبين العددين المحدَّثين للرصاصات الحية والفارغة.Cage: اكتساب تأثير لمرة واحدة يمنع انتهاء الدور عند إجراء إطلاق النار التالي الذي كان سينهي الدور في الوضع الطبيعي. وتحديدًا:- إذا نفّذ اللاعب لاحقًا
Fire at Opponent(بغض النظر عما إذا كانت الرصاصة حيّة أم فارغة)، يُطبَّق التأثير ولا ينتهي الدور. - إذا نفّذ اللاعب لاحقًا
Fire at Selfوكانت الرصاصة حيّة، يُطبَّق التأثير ولا ينتهي الدور (يخسر اللاعب مع ذلك $1$ HP، لكنه يحتفظ بالدور).
يُستهلك التأثير فورًا بعد تطبيقه مرة واحدة. يمكن استخدام عنصر
Cageواحد على الأكثر في كل دور.- إذا نفّذ اللاعب لاحقًا
إعادة التلقيم (Reloading)
عندما تصبح الأسطوانة فارغة، يتم فورًا تلقيم $6$ رصاصات جديدة (كل منها حيّة أو فارغة بشكل مستقل وباحتمال متساوٍ). يتم إبلاغ كلا اللاعبين بالعددين الجديدين للرصاصات الحية والفارغة. بالإضافة إلى ذلك، تتم إعادة تزويد كل لاعب بالعناصر حتى يصل ما لديه إلى عنصرين ($2$) (فاللاعب الذي لديه $k$ عناصر يحصل على $(2 - k)$ عناصر جديدة، يُختار كل منها بشكل مستقل وعشوائي بانتظام من الأنواع الأربعة المذكورة أعلاه).
الهدف
أنت اللاعب الذي يأخذ الدور الأول، وهدفك هو الفوز باللعبة عن طريق إقصاء خصمك.
الإدخال
يحتوي السطر الأول على عددين صحيحين $n$ و $w$، يشيران إلى أنك بحاجة للفوز في $w$ مباريات على الأقل من أصل $n$ مباريات ليتم قبول حلك. لا توجد سوى ثلاثة اختبارات:
- اختبار المثال: $n = 1$ و $w = 0$. ($0\%$)
- الاختبار السري 1: $n = 2\,000$ و $w = 1\,000$. ($50\%$)
- الاختبار السري 2: $n = 20\,000$ و $w = 11\,000$. ($55\%$)
يمكن إثبات أنه عندما يلعب كلا اللاعبين بشكل أمثل، فإن اللاعب الذي يأخذ الدور الأول يفوز بحوالي $56.89\%$ من المباريات.
بروتوكول التفاعل
بداية المباراة
يعمل حلك بدور اللاعب الذي يأخذ الدور الأول ضد المتفاعل (interactor). في بداية كل مباراة، يطبع المتفاعل عددًا صحيحًا $g$:
- إذا كان $g = 0$، فقد اكتملت جميع المباريات في التشغيل الحالي. يجب أن يتوقف حلك عن العمل فورًا.
- وإلا، فإن $g$ هو رقم المباراة الحالية ($1 \le g \le n$).
بسبب مسائل تقنية، يتم تنفيذ حلك مرتين في كل اختبار:
- يمكن للمتفاعل أن يقرر ما إذا كان سيعيد تشغيل حلك عن طريق إعطاء $g = 0$ في أي وقت.
ستتلقى نفس قيمتي $n$ و $w$ في كل تشغيل ضمن الاختبار الواحد. لذلك، فإن $n$ لا يساوي دائمًا عدد المباريات في التشغيل الحالي. من المضمون أن كل مباراة $1, \dots, n$ تُلعب مرة واحدة بالضبط عبر التشغيلين معًا. عدا ذلك، يمكن لحلك تجاهل شرط التشغيل مرتين بأمان.
حالة اللعبة
بعد ذلك، يطبع المتفاعل سطر حالة اللعبة الذي يحتوي على $13$ عددًا صحيحًا غير سالب:
$$t \quad l \quad b \quad h_1 \quad d_1 \quad m_1 \quad c_1 \quad k_1 \quad h_2 \quad d_2 \quad m_2 \quad c_2 \quad k_2$$
- $t \in \{0, 1, 2\}$: حالة الدور.
- $l, b$ ($1 \le l + b \le 6$): العددان الحاليان للرصاصات الحية والفارغة المتبقية في الأسطوانة.
- $h_1$ ($0 \le h_1 \le 5$): نقاط صحتك (HP) الحالية.
- $d_1, m_1, c_1, k_1$ ($0 \le d_1 + m_1 + c_1 + k_1 \le 2$): عدد عناصر
DummyوMagnifierوConverterوCageالتي بحوزتك حاليًا. - $h_2$ ($0 \le h_2 \le 5$): نقاط صحة خصمك الحالية.
- $d_2, m_2, c_2, k_2$ ($0 \le d_2 + m_2 + c_2 + k_2 \le 2$): عدد عناصر
DummyوMagnifierوConverterوCageالتي بحوزة خصمك.
الحالة $t = 0$ (انتهاء المباراة)
انتهت المباراة الحالية. ينتقل المتفاعل إلى المباراة التالية (بطباعة قيمة $g$ الجديدة).
الحالة $t = 1$ (دورك)
يجب أن تطبع عددًا صحيحًا لاختيار إجراء:
Fire at Opponent.Fire at Self.- استخدام عنصر
Dummy. - استخدام عنصر
Magnifier. - استخدام عنصر
Converter. - استخدام عنصر
Cage.
إذا كان الإجراء غير صالح (مثل استخدام عنصر لا تملكه، أو استخدام عنصر Cage أكثر من مرة في نفس الدور)، تبقى حالة اللعبة دون تغيير، ويطبع المتفاعل $0$ ونفس سطر الحالة ($13$ عددًا صحيحًا) مرة أخرى. وعلى الرغم من أن الدور لا يزال دورك، يجب عليك اتخاذ إجراء صالح آخر للمتابعة في اللعبة.
وإلا، يكون الإجراء فعّالًا ويطبع المتفاعل عددًا صحيحًا يمثّل النتيجة:
- للإجراءات $1$–$5$: يعيد $1$ إذا كانت الرصاصة التالية قبل الإجراء حيّة، و $2$ إذا كانت فارغة.
- للإجراء $6$: يعيد $1$ (لا يتم كشف أي معلومات عن الرصاصة).
ثم يطبع المتفاعل سطر حالة اللعبة المحدَّث.
الحالة $t = 2$ (دور الخصم)
يحاكي المتفاعل إجراء خصمك ويطبع سطرين:
- معرّف الإجراء $a \in \{1, \dots, 6\}$.
- عدد النتيجة الصحيح ($1$ أو $2$ كما هو موضح أعلاه).
لا يقوم خصمك أبدًا بإجراء غير قانوني. وبعد ذلك مباشرةً، يطبع المتفاعل سطر حالة اللعبة التالي ($13$ عددًا صحيحًا).
لكل جولة من اللعبة، يستخدم محاكي اللعبة مولد أعداد شبه عشوائية ببذرة عشوائية ثابتة. كما يتبع الخصم في المتفاعل استراتيجية حتمية. إن قرار إعادة تشغيل حلك مستقل عن إجراء التفاعل. وبالتالي، فإن نفس متتالية الإجراءات تؤدي دائمًا إلى نفس حالة اللعبة.
يتم توفير أداة اختبار لمساعدتك في تطوير حلك واختباره.
مثال
المثال 1، المرحلة 1
الإدخال
1 0 1 1 3 3 5 0 0 0 2 5 1 0 1 0 1 1 3 3 5 0 0 0 1 5 1 0 1 0 1 1 2 3 5 0 0 0 1 4 1 0 1 0 0 1 2 3 5 0 0 0 1 4 1 0 1 0 2 1 2 2 5 0 0 0 1 4 1 0 1 0 1 2 1 2 5 0 0 0 1 3 1 0 1 0 5 2 2 2 1 5 0 0 0 1 3 1 0 0 0 1 1 1 1 1 4 0 0 0 1 3 1 0 0 0 1 2 0 1 4 0 0 0 1 2 1 0 0 0 3 2 2 2 4 4 0 1 0 1 2 0 1 0 1 2 1 1 1 4 4 0 1 0 1 1 0 1 0 1 1 1 1 4 4 0 0 0 1 1 0 1 0 1 1 0 0 4 4 0 0 0 1 0 0 1 0 1 0
الإخراج
6 1 6 2 1 1 4 1
المثال 1، المرحلة 2
الإدخال
1 0 0