Þetta er gagnvirkt verkefni. Mundu að tæma úttaksbiðminnið (flush) eftir hverja prentun. Til að tæma úttakið geturðu notað:
fflush(stdout)eðacout.flush()í C/C++;System.out.flush()í Java og Kotlin;sys.stdout.flush()í Python.

Hugmyndin að baki leiknum, myndskreytt af Nano Banana Pro.
Þú tekur þátt í herkænskuleik sem spilaður er í umferðum og nefnist Revolver Roulette.
Leikurinn hefst með sexhleypu sem hlaðin er nákvæmlega $6$ kúlum. Hver kúla er óháð öðrum og með jöfnum líkum annaðhvort virk kúla (live) eða púðurkúla (blank). Báðir leikmenn vita alltaf hve margar virkar kúlur og púðurkúlur eru eftir í tromlunni hverju sinni, en nákvæm röð þeirra er óþekkt.
Hver leikmaður byrjar með $5$ lífstig (HP) og $2$ hluti. Ef HP leikmanns fer niður í $0$ eða lægra fellur hann úr leik og hinn leikmaðurinn sigrar. Leikmenn skiptast á að framkvæma aðgerðir.
Gangur umferðar
Í sinni umferð má virki leikmaðurinn framkvæma hvaða fjölda sem er af eftirfarandi aðgerðum:
- Nota hvaða hlut sem er.
- Framkvæma hvaða skotaðgerð sem er.
Umferðinni lýkur aðeins þegar skotaðgerð veldur því að umferðin færist yfir til hins leikmannsins, eða þegar annar hvor leikmaðurinn fellur úr leik.
Skotaðgerðir
Virki leikmaðurinn verður að velja eina af eftirfarandi skotaðgerðum:
Fire at Opponent: Virki leikmaðurinn skýtur næstu kúlu á hinn leikmanninn. Ef hún er virk tapar hinn leikmaðurinn $1$ HP. Óháð tegund kúlunnar færist umferðin yfir til hins leikmannsins.Fire at Self: Virki leikmaðurinn skýtur næstu kúlu á sjálfan sig. Ef hún er virk tapar virki leikmaðurinn $1$ HP og umferðin færist yfir til hins leikmannsins. Annars, ef hún er púðurkúla, heldur virki leikmaðurinn umferðinni og heldur áfram að framkvæma aðgerðir.
Hlutir
Þegar hlutur er notaður eyðist hann og virki leikmaðurinn heldur umferðinni, óháð tegund hlutarins. Hlutir eru sýnilegir báðum leikmönnum. Þegar leikmaður fær nýjan hlut (þar á meðal hvern upphafshlut) er hann valinn jafndreift af handahófi úr eftirfarandi fjórum tegundum:
Dummy: Skjóta næstu kúlu á æfingabrúðu. Þetta eyðir kúlunni og telst ekki sem skotaðgerð.Magnifier: Kíkja á næstu kúlu til að sjá hvort hún sé virk kúla eða púðurkúla. Báðir leikmenn fá að vita niðurstöðuna.Converter: Snúa við tegund næstu kúlu (virk $\leftrightarrow$ púðurkúla). Báðir leikmenn sjá uppfærðan fjölda virkra kúlna og púðurkúlna.Cage: Fá einnota áhrif sem koma í veg fyrir að umferðinni ljúki við næstu skotaðgerð sem venjulega myndi ljúka henni. Nánar tiltekið:- Ef leikmaðurinn framkvæmir síðar
Fire at Opponent(óháð því hvort kúlan er virk eða púðurkúla) virkjast áhrifin og umferðinni lýkur ekki. - Ef leikmaðurinn framkvæmir síðar
Fire at Selfog kúlan er virk virkjast áhrifin og umferðinni lýkur ekki (leikmaðurinn tapar samt $1$ HP en heldur umferðinni).
Áhrifin eyðast samstundis eftir að þau hafa virkað einu sinni. Í mesta lagi má nota einn
Cagehlut í hverri umferð.- Ef leikmaðurinn framkvæmir síðar
Endurhleðsla (Reloading)
Þegar tromlan tæmist eru $6$ nýjar kúlur hlaðnar samstundis (hver um sig óháð virk eða púðurkúla með jöfnum líkum). Báðum leikmönnum er tilkynnt um nýjan fjölda virkra kúlna og púðurkúlna. Að auki fær hvor leikmaður uppfyllingu hluta upp í allt að $2$ hluti (leikmaður með $k$ hluti fær $(2 - k)$ nýja hluti, þar sem hver er valinn óháð og jafndreift af handahófi úr tegundunum fjórum hér að ofan).
Markmið
Þú ert leikmaðurinn sem á fyrstu umferðina og markmið þitt er að vinna leikinn með því að fella andstæðinginn úr leik.
Inntak
Fyrsta línan inniheldur tvær heiltölur $n$ og $w$, sem gefa til kynna að þú þurfir að vinna að minnsta kosti $w$ af $n$ leikjum til að lausnin verði samþykkt. Það eru aðeins þrjú próf:
- Dæmapróf: $n = 1$ og $w = 0$. ($0\%$)
- Leynipróf 1: $n = 2\,000$ og $w = 1\,000$. ($50\%$)
- Leynipróf 2: $n = 20\,000$ og $w = 11\,000$. ($55\%$)
Sýna má fram á að þegar báðir leikmenn spila ákjósanlega vinnur leikmaðurinn sem á fyrstu umferðina um það bil $56.89\%$ leikjanna.
Samskiptareglur
Upphaf leiks
Lausnin þín kemur fram sem leikmaðurinn sem á fyrstu umferðina gegn samskiptaforritinu. Í upphafi hvers leiks prentar samskiptaforritið heiltölu $g$:
- Ef $g = 0$ er öllum leikjum í núverandi keyrslu lokið. Lausnin þín verður að hætta keyrslu samstundis.
- Annars er $g$ númer núverandi leiks ($1 \le g \le n$).
Vegna tæknilegra atriða er lausnin þín keyrð tvisvar á hverju prófi:
- Samskiptaforritið getur ákveðið hvort það endurræsi lausnina þína með því að gefa $g = 0$ hvenær sem er.
Þú munt fá sömu gildi á $n$ og $w$ í hverri keyrslu prófs. Þess vegna er $n$ ekki alltaf jafnt fjölda leikja í núverandi keyrslu. Tryggt er að hver leikur $1, \dots, n$ er spilaður nákvæmlega einu sinni samanlagt í keyrslunum tveimur. Að öðru leyti getur lausnin þín óhikað hunsað skilyrðið um tvöfalda keyrslu.
Staða leiks
Þá prentar samskiptaforritið stöðulínu leiksins sem inniheldur $13$ óneikvæðar heiltölur:
$$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\}$: staða umferðar.
- $l, b$ ($1 \le l + b \le 6$): núverandi fjöldi virkra kúlna og púðurkúlna sem eftir eru í tromlunni.
- $h_1$ ($0 \le h_1 \le 5$): núverandi HP þín.
- $d_1, m_1, c_1, k_1$ ($0 \le d_1 + m_1 + c_1 + k_1 \le 2$): fjöldi
Dummy,Magnifier,ConverterogCagehluta sem þú heldur á núna. - $h_2$ ($0 \le h_2 \le 5$): núverandi HP andstæðingsins.
- $d_2, m_2, c_2, k_2$ ($0 \le d_2 + m_2 + c_2 + k_2 \le 2$): fjöldi
Dummy,Magnifier,ConverterogCagehluta sem andstæðingurinn heldur á.
Tilvik $t = 0$ (Leik lokið)
Núverandi leik er lokið. Samskiptaforritið heldur áfram í næsta leik (og prentar nýtt $g$).
Tilvik $t = 1$ (Þín umferð)
Þú verður að prenta heiltölu til að velja aðgerð:
Fire at Opponent.Fire at Self.- Nota
Dummyhlut. - Nota
Magnifierhlut. - Nota
Converterhlut. - Nota
Cagehlut.
Ef aðgerðin er ógild (t.d. að nota hlut sem þú átt ekki, eða nota Cage hlut oftar en einu sinni í sömu umferð) helst staða leiksins óbreytt, og samskiptaforritið prentar $0$ og sömu stöðulínu ($13$ heiltölur) aftur. Þótt enn sé þín umferð verður þú að gera aðra gilda aðgerð til að halda leiknum áfram.
Annars tekur aðgerðin gildi og samskiptaforritið prentar niðurstöðuheiltölu:
- Fyrir aðgerðir $1$–$5$: Skilar $1$ ef næsta kúla fyrir aðgerðina er virk, $2$ ef hún er púðurkúla.
- Fyrir aðgerð $6$: Skilar $1$ (engar upplýsingar um kúlu afhjúpaðar).
Samskiptaforritið prentar síðan uppfærða stöðulínu leiksins.
Tilvik $t = 2$ (Umferð andstæðings)
Samskiptaforritið hermir eftir aðgerð andstæðingsins og prentar tvær línur:
- Auðkenni aðgerðar $a \in \{1, \dots, 6\}$.
- Niðurstöðuheiltöluna ($1$ eða $2$ eins og lýst er hér að ofan).
Andstæðingurinn gerir aldrei ólöglega aðgerð. Strax á eftir prentar samskiptaforritið næstu stöðulínu leiksins ($13$ heiltölur).
Fyrir hverja lotu leiksins notar leikjahermirinn gervihandahófsgjafa með föstu slembifræi (seed). Einnig notar andstæðingurinn í samskiptaforritinu lögmálsbundna (deterministic) herbragðsáætlun. Ákvörðunin um að endurræsa lausnina þína er óháð samskiptaferlinu. Því leiðir sama runa aðgerða alltaf til sömu leikstöðu.
Prófunartól fylgir með til að hjálpa þér að þróa og prófa lausnina þína.
Dæmi
Dæmi 1, Umferð 1
Inntak
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
Úttak
6 1 6 2 1 1 4 1
Dæmi 1, Umferð 2
Inntak
1 0 0