<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3573_-_Joc_11</id>
	<title>3573 - Joc 11 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3573_-_Joc_11"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3573_-_Joc_11&amp;action=history"/>
	<updated>2026-05-01T07:34:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3573_-_Joc_11&amp;diff=10029&amp;oldid=prev</id>
		<title>AjM: Pagină nouă: == Enunt == Pentru un concurs de design de jocuri, Gigel vrea să construiască un joc. La joc participă n concurenţi numerotaţi de la 1 la n. Fiecare concurent are la dispoziţie câte un şir de m încăperi, numerotate de la 1 la m. Scopul jocului este de a găsi o comoară ascunsă în una din aceste încăperi. Fiecare încăpere conţine un cod, număr natural, fie egal cu 0, fie având cel puţin 2 cifre. Ultima cifră indică numărul de etape de penalizare, adică...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3573_-_Joc_11&amp;diff=10029&amp;oldid=prev"/>
		<updated>2024-06-03T17:10:19Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunt == Pentru un concurs de design de jocuri, Gigel vrea să construiască un joc. La joc participă n concurenţi numerotaţi de la 1 la n. Fiecare concurent are la dispoziţie câte un şir de m încăperi, numerotate de la 1 la m. Scopul jocului este de a găsi o comoară ascunsă în una din aceste încăperi. Fiecare încăpere conţine un cod, număr natural, fie egal cu 0, fie având cel puţin 2 cifre. Ultima cifră indică numărul de etape de penalizare, adică...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunt ==&lt;br /&gt;
Pentru un concurs de design de jocuri, Gigel vrea să construiască un joc. La joc participă n concurenţi numerotaţi de la 1 la n. Fiecare concurent are la dispoziţie câte un şir de m încăperi, numerotate de la 1 la m. Scopul jocului este de a găsi o comoară ascunsă în una din aceste încăperi. Fiecare încăpere conţine un cod, număr natural, fie egal cu 0, fie având cel puţin 2 cifre. Ultima cifră indică numărul de etape de penalizare, adică numărul de etape în care concurentul nu are voie să părăsească încăperea. Numărul obţinut prin eliminarea ultimei cifre a codului indică numărul încăperii în care se va deplasa acesta la următoarea etapă sau la expirarea penalizării.&lt;br /&gt;
&lt;br /&gt;
Există două excepţii de la regula de definire a codului: numărul 9999 codifică o încăpere conţinând o comoară, iar numărul 0 o încăpere conţinând o capcana.&lt;br /&gt;
&lt;br /&gt;
În etapa 1 fiecare jucător intră în încăperea 1 din şirul său de încăperi. În funcţie de codul găsit în încăpere sunt posibile următoarele situaţii:&lt;br /&gt;
&lt;br /&gt;
* codul găsit este 9999 ceea ce înseamnă că jucătorul este câştigător şi jocul se încheie la finalul acestei etape;&lt;br /&gt;
* codul găsit este 0 ceea ce duce la eliminarea sa din joc;&lt;br /&gt;
* pentru celelalte coduri, după efectuarea etapelor de penalizare, jucătorul efectuează o deplasare în încăperea indicată de cod. De exemplu la întâlnirea codul 157, după efectuarea celor 7 etape de penalizare jucătorul se va deplasa în camera 15.&lt;br /&gt;
Trecerea de la o etapă la alta se realizează simultan pentru toţi concurenţii.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Fiind dat numărul n de concurenţi, numărul m de încăperi alocate fiecărui concurent, şi codurile din cele n×m încăperi să se determine câştigătorul jocului, numărul încăperii în care a găsit comoara, numărul de etape parcurse până când câştigătorul găseşte comoara precum şi numărul de concurenţi eliminaţi din joc până la etapa respectivă (inclusiv).&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Prima linie a fişierului de intrare joc11.in conţine două numere naturale n şi m, separate printr-un spaţiu, reprezentând numărul concurenţilor, respectiv numărul încăperilor. Următoarele n linii conţin câte m numere naturale, separate prin câte un spaţiu, reprezentând codurile din fiecare încăpere.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Prima linie a fişierului de ieşire joc11.out va conţine patru numere naturale separate prin câte un spaţiu, reprezentând indicele câştigătorului, numărul încăperii unde a găsit comoara, numărul etapei în care a câştigat şi respectiv numărul de concurenţi eliminaţi din joc.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ n ≤ 400&lt;br /&gt;
* 1 ≤ m ≤ 900&lt;br /&gt;
* Pentru toate testele de intrare se garantează că există exact un câştigător.&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; joc11.in&lt;br /&gt;
 4 8&lt;br /&gt;
 0 9999 41 50 61 70 80 30&lt;br /&gt;
 30 80 60 60 9999 21 40 50&lt;br /&gt;
 20 30 40 50 61 71 81 9999&lt;br /&gt;
 20 30 50 0 61 71 9999 41&lt;br /&gt;
; joc11.out&lt;br /&gt;
 2 5 7 1&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Câştigă jucătorul al 2-lea, după 7 etape, iar încăperea în care a găsit comoara este încăperea 5. În cele 7 etape a fost eliminat un singur concurent şi anume primul concurent.&lt;br /&gt;
Încăperile prin care trece jucătorul câştigător până la final sunt: 1-&amp;gt;3-&amp;gt;6-&amp;gt;2-&amp;gt;8-&amp;gt;5&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def simulate_game(n, m, rooms):&lt;br /&gt;
    winner = None&lt;br /&gt;
    room_number = None&lt;br /&gt;
    steps = 0&lt;br /&gt;
    eliminated = 0&lt;br /&gt;
&lt;br /&gt;
    # Cream o listă de seturi pentru a memora concurenții eliminați în fiecare etapă&lt;br /&gt;
    eliminated_each_step = [set() for _ in range(m)]&lt;br /&gt;
&lt;br /&gt;
    for step in range(m):&lt;br /&gt;
        next_rooms = [0] * n  # Inițializăm lista cu următoarele încăperi pentru fiecare concurent&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            if i in eliminated_each_step[step]:&lt;br /&gt;
                continue  # Dacă concurentul este deja eliminat în această etapă, nu facem nimic cu el&lt;br /&gt;
&lt;br /&gt;
            code = rooms[i][step]  # Codul din încăperea curentă a concurentului&lt;br /&gt;
&lt;br /&gt;
            if code == 9999:&lt;br /&gt;
                winner = i + 1&lt;br /&gt;
                room_number = step + 1&lt;br /&gt;
                steps = step + 1&lt;br /&gt;
                return winner, room_number, steps, eliminated&lt;br /&gt;
&lt;br /&gt;
            if code == 0:&lt;br /&gt;
                eliminated += 1&lt;br /&gt;
                eliminated_each_step[step].add(i)&lt;br /&gt;
            else:&lt;br /&gt;
                next_room = int(str(code)[:-1])  # Obținem numărul următoarei încăperi&lt;br /&gt;
                next_rooms[next_room - 1] += 1&lt;br /&gt;
&lt;br /&gt;
        # Actualizăm seturile de concurenți eliminați pentru etapele următoare&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            if next_rooms[i] &amp;gt; 1:&lt;br /&gt;
                eliminated_each_step[step + 1].add(i)&lt;br /&gt;
&lt;br /&gt;
    return winner, room_number, steps, eliminated&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;joc11.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        n, m = map(int, fin.readline().split())&lt;br /&gt;
        rooms = [list(map(int, fin.readline().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    winner, room_number, steps, eliminated = simulate_game(n, m, rooms)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;joc11.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(f&amp;quot;{winner} {room_number} {steps} {eliminated}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>AjM</name></author>
	</entry>
</feed>