<?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=1598_-_Coada1</id>
	<title>1598 - Coada1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1598_-_Coada1"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1598_-_Coada1&amp;action=history"/>
	<updated>2026-05-01T06:36:16Z</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=1598_-_Coada1&amp;diff=7427&amp;oldid=prev</id>
		<title>Bonte Lucas Gabriel at 18:56, 17 November 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1598_-_Coada1&amp;diff=7427&amp;oldid=prev"/>
		<updated>2023-11-17T18:56:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;//wiki.universitas.ro/index.php?title=1598_-_Coada1&amp;amp;diff=7427&amp;amp;oldid=7178&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Bonte Lucas Gabriel</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1598_-_Coada1&amp;diff=7178&amp;oldid=prev</id>
		<title>Bonte Lucas Gabriel: Pagină nouă: Se consideră &#039;&#039;&#039;C&#039;&#039;&#039; o coadă de numere naturale, iniţial vidă. Se definesc două tipuri de operaţii.  Operaţia &#039;&#039;&#039;1&#039;&#039;&#039; : &#039;&#039;&#039;push X&#039;&#039;&#039;, adaugă elementul &#039;&#039;&#039;X&#039;&#039;&#039; în coadă. Dacă &#039;&#039;&#039;X&#039;&#039;&#039; există deja în coadă, se scot toate elementele din coadă, pana la întâlnirea lui, inclusiv &#039;&#039;&#039;X&#039;&#039;&#039;. Exemplu: &#039;&#039;&#039;C: 2 4 5 1 6&#039;&#039;&#039; &#039;&#039;&#039;Push 5&#039;&#039;&#039; &#039;&#039;&#039;C: 1 6 5 ( s-au scos 2, 4, 5).&#039;&#039;&#039;  Operaţia &#039;&#039;&#039;2&#039;&#039;&#039;: &#039;&#039;&#039;query X&#039;&#039;&#039;, cere afişarea poziţiei elementului &#039;&#039;&#039;X&#039;&#039;&#039; în coada &#039;&#039;&#039;C&#039;&#039;&#039;. Dac...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1598_-_Coada1&amp;diff=7178&amp;oldid=prev"/>
		<updated>2023-11-08T21:11:10Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Se consideră &amp;#039;&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;#039; o coadă de numere naturale, iniţial vidă. Se definesc două tipuri de operaţii.  Operaţia &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; : &amp;#039;&amp;#039;&amp;#039;push X&amp;#039;&amp;#039;&amp;#039;, adaugă elementul &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; în coadă. Dacă &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; există deja în coadă, se scot toate elementele din coadă, pana la întâlnirea lui, inclusiv &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039;. Exemplu: &amp;#039;&amp;#039;&amp;#039;C: 2 4 5 1 6&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;Push 5&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;C: 1 6 5 ( s-au scos 2, 4, 5).&amp;#039;&amp;#039;&amp;#039;  Operaţia &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;: &amp;#039;&amp;#039;&amp;#039;query X&amp;#039;&amp;#039;&amp;#039;, cere afişarea poziţiei elementului &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; în coada &amp;#039;&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;#039;. Dac...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Se consideră &amp;#039;&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;#039; o coadă de numere naturale, iniţial vidă. Se definesc două tipuri de operaţii.&lt;br /&gt;
&lt;br /&gt;
Operaţia &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; : &amp;#039;&amp;#039;&amp;#039;push X&amp;#039;&amp;#039;&amp;#039;, adaugă elementul &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; în coadă. Dacă &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; există deja în coadă, se scot toate elementele din coadă, pana la întâlnirea lui, inclusiv &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
Exemplu: &amp;#039;&amp;#039;&amp;#039;C: 2 4 5 1 6&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Push 5&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;C: 1 6 5 ( s-au scos 2, 4, 5).&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Operaţia &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;: &amp;#039;&amp;#039;&amp;#039;query X&amp;#039;&amp;#039;&amp;#039;, cere afişarea poziţiei elementului &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; în coada &amp;#039;&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;#039;. Dacă elementul nu există în coadă, se afişează &amp;#039;&amp;#039;&amp;#039;-1&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
Exemplu: &amp;#039;&amp;#039;&amp;#039;C: 2 5 1 3 7&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Query 1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Răspuns: 3&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Cerința==&lt;br /&gt;
&lt;br /&gt;
Dându-se &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039;, reprezentând numărul de operaţii şi cele &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039; operaţii, să se răspundă la operaţiile de tip &amp;#039;&amp;#039;&amp;#039;query&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;coada1.in&amp;#039;&amp;#039;&amp;#039; conține:&lt;br /&gt;
&lt;br /&gt;
*Pe prima linie numărul natural &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
*Pe următoarele &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039; linii, câte un string şi câte un număr natural, de forma &amp;#039;&amp;#039;&amp;#039;tip_operaţie x&amp;#039;&amp;#039;&amp;#039;, reprezentând tipul operaţiei şi numărul &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;coada1.out&amp;#039;&amp;#039;&amp;#039; va conține:&lt;br /&gt;
&lt;br /&gt;
*Răspunsurile pentru operaţiile de tip &amp;#039;&amp;#039;&amp;#039;query&amp;#039;&amp;#039;&amp;#039;, câte unul pe linie.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;1 ≤ M ≤ 50.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;1 ≤ X ≤ 1.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
&lt;br /&gt;
;coada1.in&lt;br /&gt;
&lt;br /&gt;
:10&lt;br /&gt;
:push 3&lt;br /&gt;
:push 6&lt;br /&gt;
:push 8&lt;br /&gt;
:push 2&lt;br /&gt;
:query 6&lt;br /&gt;
:push 6&lt;br /&gt;
:query 4&lt;br /&gt;
:push 6&lt;br /&gt;
:push 7&lt;br /&gt;
:query 6&lt;br /&gt;
&lt;br /&gt;
;coada1.out&lt;br /&gt;
&lt;br /&gt;
:2&lt;br /&gt;
:-1&lt;br /&gt;
:1&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
&lt;br /&gt;
Înaintea primei întrebări, coada arată asa: &amp;#039;&amp;#039;&amp;#039;3 6 8 2&amp;#039;&amp;#039;&amp;#039;, deci &amp;#039;&amp;#039;&amp;#039;6&amp;#039;&amp;#039;&amp;#039; apare pe poziţia &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
Înaintea celei de-a doua întrebări, coada arată asa: &amp;#039;&amp;#039;&amp;#039;8 2 6&amp;#039;&amp;#039;&amp;#039;, deci &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; nu apare.&lt;br /&gt;
Înaintea ultimei întrebări, coada arată asa: &amp;#039;&amp;#039;&amp;#039;6 7&amp;#039;&amp;#039;&amp;#039;, deci &amp;#039;&amp;#039;&amp;#039;6&amp;#039;&amp;#039;&amp;#039; apare pe poziţia &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Definim funcția &amp;#039;solve&amp;#039; care primește numărul de operații &amp;#039;M&amp;#039; și o listă de operații&lt;br /&gt;
def solve(M, operations):&lt;br /&gt;
    # Inițializăm coada ca o listă goală&lt;br /&gt;
    queue = []&lt;br /&gt;
    # Inițializăm lista de rezultate ca o listă goală&lt;br /&gt;
    output = []&lt;br /&gt;
    # Parcurgem fiecare operație&lt;br /&gt;
    for operation in operations:&lt;br /&gt;
        # Dacă operația este &amp;#039;push&amp;#039;&lt;br /&gt;
        if operation[0] == &amp;#039;push&amp;#039;:&lt;br /&gt;
            # Extragem valoarea &amp;#039;x&amp;#039;&lt;br /&gt;
            x = operation[1]&lt;br /&gt;
            # Dacă &amp;#039;x&amp;#039; se află deja în coadă&lt;br /&gt;
            if x in queue:&lt;br /&gt;
                # Eliminăm toate elementele din coadă până la &amp;#039;x&amp;#039;, inclusiv &amp;#039;x&amp;#039;&lt;br /&gt;
                queue = queue[queue.index(x)+1:]&lt;br /&gt;
            # Adăugăm &amp;#039;x&amp;#039; la sfârșitul cozii&lt;br /&gt;
            queue.append(x)&lt;br /&gt;
        # Dacă operația este &amp;#039;query&amp;#039;&lt;br /&gt;
        elif operation[0] == &amp;#039;query&amp;#039;:&lt;br /&gt;
            # Extragem valoarea &amp;#039;x&amp;#039;&lt;br /&gt;
            x = operation[1]&lt;br /&gt;
            # Dacă &amp;#039;x&amp;#039; se află în coadă&lt;br /&gt;
            if x in queue:&lt;br /&gt;
                # Adăugăm poziția lui &amp;#039;x&amp;#039; în coadă la rezultate&lt;br /&gt;
                output.append(queue.index(x) + 1)&lt;br /&gt;
            else:&lt;br /&gt;
                # Dacă &amp;#039;x&amp;#039; nu se află în coadă, adăugăm -1 la rezultate&lt;br /&gt;
                output.append(-1)&lt;br /&gt;
    # Returnăm lista de rezultate&lt;br /&gt;
    return output&lt;br /&gt;
&lt;br /&gt;
# Definim numărul de operații și lista de operații&lt;br /&gt;
M = 10&lt;br /&gt;
operations = [&lt;br /&gt;
    [&amp;#039;push&amp;#039;, 3],&lt;br /&gt;
    [&amp;#039;push&amp;#039;, 6],&lt;br /&gt;
    [&amp;#039;push&amp;#039;, 8],&lt;br /&gt;
    [&amp;#039;push&amp;#039;, 2],&lt;br /&gt;
    [&amp;#039;query&amp;#039;, 6],&lt;br /&gt;
    [&amp;#039;push&amp;#039;, 6],&lt;br /&gt;
    [&amp;#039;query&amp;#039;, 4],&lt;br /&gt;
    [&amp;#039;push&amp;#039;, 6],&lt;br /&gt;
    [&amp;#039;push&amp;#039;, 7],&lt;br /&gt;
    [&amp;#039;query&amp;#039;, 6]&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
# Apelăm funcția &amp;#039;solve&amp;#039; cu numărul de operații și lista de operații&lt;br /&gt;
results = solve(M, operations)&lt;br /&gt;
&lt;br /&gt;
# Deschidem fișierul &amp;#039;coada1.out&amp;#039; pentru scriere&lt;br /&gt;
with open(&amp;#039;coada1.out&amp;#039;, &amp;#039;w&amp;#039;) as f:&lt;br /&gt;
    # Scriem fiecare rezultat pe câte o linie nouă în fișier&lt;br /&gt;
    for result in results:&lt;br /&gt;
        f.write(str(result) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bonte Lucas Gabriel</name></author>
	</entry>
</feed>