Ceci est un problème interactif. N'oubliez pas de vider le tampon de sortie (flush) après chaque affichage. Pour vider votre sortie, vous pouvez utiliser :
fflush(stdout)oucout.flush()en C/C++ ;System.out.flush()en Java et Kotlin ;sys.stdout.flush()en Python.

Le concept du jeu, illustré par Nano Banana Pro.
Vous participez à un jeu stratégique au tour par tour connu sous le nom de Revolver Roulette.
La partie commence avec un revolver chargé d'exactement $6$ balles. Chaque balle est soit réelle (live), soit à blanc (blank), indépendamment et avec une probabilité égale. Les deux joueurs connaissent toujours le nombre actuel de balles réelles et à blanc restantes dans le barillet, mais leur ordre exact est inconnu.
Chaque joueur commence avec $5$ points de vie (HP) et $2$ objets. Si les HP d'un joueur tombent à $0$ ou moins, il est éliminé et l'autre joueur gagne. Les joueurs effectuent des actions à tour de rôle.
Déroulement d'un tour
Pendant son tour, le joueur actif peut effectuer un nombre quelconque des actions suivantes :
- Utiliser n'importe quel objet.
- Effectuer n'importe quelle action de tir.
Le tour ne se termine que lorsqu'une action de tir fait passer le tour à l'autre joueur, ou lorsqu'un joueur est éliminé.
Actions de tir
Le joueur actif doit choisir l'une des actions de tir suivantes :
Fire at Opponent: Le joueur actif tire la prochaine balle sur l'autre joueur. Si elle est réelle, l'autre joueur perd $1$ HP. Quel que soit le type de balle, le tour passe à l'autre joueur.Fire at Self: Le joueur actif se tire la prochaine balle sur lui-même. Si elle est réelle, le joueur actif perd $1$ HP et le tour passe à l'autre joueur. Sinon, si c'est une balle à blanc, le joueur actif conserve son tour et continue d'effectuer des actions.
Objets
Lorsqu'un objet est utilisé, il est consommé et le joueur actif conserve son tour, quel que soit le type d'objet. Les objets sont visibles par les deux joueurs. Lorsqu'un joueur obtient un nouvel objet (y compris chacun des objets initiaux), celui-ci est choisi uniformément au hasard parmi les quatre types suivants :
Dummy: Tire la prochaine balle sur un mannequin d'entraînement. Cela consomme la balle et n'est pas considéré comme une action de tir.Magnifier: Regarde la prochaine balle pour révéler si elle est réelle ou à blanc. Les deux joueurs apprennent le résultat.Converter: Inverse le type de la prochaine balle (réelle $\leftrightarrow$ à blanc). Les deux joueurs observent les nombres mis à jour de balles réelles et à blanc.Cage: Confère un effet à usage unique qui empêche le tour de se terminer lors de la prochaine action de tir qui devrait normalement y mettre fin. Plus précisément :- Si le joueur effectue ensuite
Fire at Opponent(que la balle soit réelle ou à blanc), l'effet s'applique et le tour ne se termine pas. - Si le joueur effectue ensuite
Fire at Selfet que la balle est réelle, l'effet s'applique et le tour ne se termine pas (le joueur perd tout de même $1$ HP, mais conserve son tour).
L'effet est consommé immédiatement après s'être appliqué une fois. Au plus un objet
Cagepeut être utilisé par tour.- Si le joueur effectue ensuite
Rechargement (Reloading)
Lorsque le barillet est vide, $6$ nouvelles balles sont immédiatement chargées (chacune étant indépendamment réelle ou à blanc avec une probabilité égale). Les deux joueurs sont informés des nouveaux nombres de balles réelles et à blanc. De plus, chaque joueur reçoit des objets jusqu'à en avoir $2$ (un joueur ayant $k$ objets reçoit $(2 - k)$ nouveaux objets, chacun choisi indépendamment et uniformément au hasard parmi les quatre types ci-dessus).
Objectif
Vous êtes le joueur qui joue le premier tour, et votre objectif est de gagner la partie en éliminant votre adversaire.
Entrée
La première ligne contient deux entiers $n$ et $w$, indiquant que vous devez gagner au moins $w$ parties sur $n$ pour que votre solution soit acceptée. Il n'y a que trois tests :
- Test d'exemple : $n = 1$ et $w = 0$. ($0\%$)
- Test secret 1 : $n = 2\,000$ et $w = 1\,000$. ($50\%$)
- Test secret 2 : $n = 20\,000$ et $w = 11\,000$. ($55\%$)
On peut montrer que lorsque les deux joueurs jouent de manière optimale, le joueur qui joue le premier tour gagne environ $56.89\%$ des parties.
Protocole d'interaction
Début de partie
Votre solution agit en tant que joueur jouant le premier tour contre l'interacteur. Au début de chaque partie, l'interacteur affiche un entier $g$ :
- Si $g = 0$, toutes les parties de l'exécution actuelle sont terminées. Votre solution doit se terminer immédiatement.
- Sinon, $g$ est l'indice de la partie actuelle ($1 \le g \le n$).
En raison de problèmes techniques, votre solution est exécutée deux fois sur chaque test :
- L'interacteur peut décider de redémarrer votre solution en envoyant $g = 0$ à tout moment.
Vous recevrez les mêmes valeurs $n$ et $w$ pour chaque exécution d'un test. Par conséquent, $n$ n'est pas toujours égal au nombre de parties dans l'exécution en cours. Il est garanti que chaque partie $1, \dots, n$ est jouée exactement une fois sur l'ensemble des deux exécutions. En dehors de cela, votre solution peut ignorer sans risque la condition de double exécution.
État de la partie
Ensuite, l'interacteur affiche la ligne d'état de la partie contenant $13$ entiers naturels :
$$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\}$ : statut du tour.
- $l, b$ ($1 \le l + b \le 6$) : nombres actuels de balles réelles et à blanc restantes dans le barillet.
- $h_1$ ($0 \le h_1 \le 5$) : vos HP actuels.
- $d_1, m_1, c_1, k_1$ ($0 \le d_1 + m_1 + c_1 + k_1 \le 2$) : le nombre d'objets
Dummy,Magnifier,ConverteretCageque vous détenez actuellement. - $h_2$ ($0 \le h_2 \le 5$) : les HP actuels de votre adversaire.
- $d_2, m_2, c_2, k_2$ ($0 \le d_2 + m_2 + c_2 + k_2 \le 2$) : le nombre d'objets
Dummy,Magnifier,ConverteretCageque détient votre adversaire.
Cas $t = 0$ (Fin de partie)
La partie actuelle est terminée. L'interacteur passe à la partie suivante (en affichant le nouveau $g$).
Cas $t = 1$ (Votre tour)
Vous devez afficher un entier pour choisir une action :
Fire at Opponent.Fire at Self.- Utiliser un objet
Dummy. - Utiliser un objet
Magnifier. - Utiliser un objet
Converter. - Utiliser un objet
Cage.
Si l'action est invalide (par exemple, utiliser un objet que vous n'avez pas, ou utiliser un objet Cage plus d'une fois au cours du même tour), l'état de la partie reste inchangé, l'interacteur affiche $0$ et réaffiche la même ligne d'état ($13$ entiers). Bien que ce soit toujours votre tour, vous devez effectuer une autre action valide pour poursuivre la partie.
Sinon, l'action est prise en compte et l'interacteur affiche un entier de résultat :
- Pour les actions $1$–$5$ : Renvoie $1$ si la prochaine balle avant l'action est réelle, $2$ si elle est à blanc.
- Pour l'action $6$ : Renvoie $1$ (aucune information sur la balle n'est révélée).
L'interacteur affiche ensuite la ligne d'état de la partie mise à jour.
Cas $t = 2$ (Tour de l'adversaire)
L'interacteur simule l'action de votre adversaire et affiche deux lignes :
- L'identifiant de l'action $a \in \{1, \dots, 6\}$.
- L'entier de résultat ($1$ ou $2$ comme décrit ci-dessus).
Votre adversaire n'effectue jamais d'action illégale. Immédiatement après, l'interacteur affiche la ligne d'état suivante ($13$ entiers).
Pour chaque manche de la partie, le simulateur de jeu utilise un générateur de nombres pseudo-aléatoires avec une graine (seed) fixe. De plus, l'adversaire dans l'interacteur emploie une stratégie déterministe. La décision de redémarrer votre solution est indépendante de la procédure d'interaction. Par conséquent, la même séquence d'actions mène toujours au même état de jeu.
Un outil de test est fourni pour vous aider à développer et tester votre solution.
Exemple
Exemple 1, Passe 1
Entrée
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
Sortie
6 1 6 2 1 1 4 1
Exemple 1, Passe 2
Entrée
1 0 0