<?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=0634_-_Repetare</id>
	<title>0634 - Repetare - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=0634_-_Repetare"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0634_-_Repetare&amp;action=history"/>
	<updated>2026-05-02T12:27:22Z</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=0634_-_Repetare&amp;diff=9001&amp;oldid=prev</id>
		<title>Corjuc Eunice: Pagină nouă: = Cerința = Gigel are un șir cu &lt;code&gt;n&lt;/code&gt; elemente, numere naturale. Plictisit, el construiește un nou șir, prin scrierea repetată a valorilor șirului dat. De exemplu, dacă șirul inițial este &lt;code&gt;(2 3 1 5)&lt;/code&gt;, scriindu-l de &lt;code&gt;3&lt;/code&gt; ori se obține șirul: &lt;code&gt;(2 3 1 5 2 3 1 5 2 3 1 5)&lt;/code&gt;.  Maleficul Costel elimină sau chiar schimbă unele valori din șirul al doilea. Acum Gigel vă pune la dispoziție două șiruri de numere naturale și roag...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0634_-_Repetare&amp;diff=9001&amp;oldid=prev"/>
		<updated>2024-01-04T18:28:16Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: = Cerința = Gigel are un șir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale. Plictisit, el construiește un nou șir, prin scrierea repetată a valorilor șirului dat. De exemplu, dacă șirul inițial este &amp;lt;code&amp;gt;(2 3 1 5)&amp;lt;/code&amp;gt;, scriindu-l de &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; ori se obține șirul: &amp;lt;code&amp;gt;(2 3 1 5 2 3 1 5 2 3 1 5)&amp;lt;/code&amp;gt;.  Maleficul Costel elimină sau chiar schimbă unele valori din șirul al doilea. Acum Gigel vă pune la dispoziție două șiruri de numere naturale și roag...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Cerința =&lt;br /&gt;
Gigel are un șir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale. Plictisit, el construiește un nou șir, prin scrierea repetată a valorilor șirului dat. De exemplu, dacă șirul inițial este &amp;lt;code&amp;gt;(2 3 1 5)&amp;lt;/code&amp;gt;, scriindu-l de &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; ori se obține șirul: &amp;lt;code&amp;gt;(2 3 1 5 2 3 1 5 2 3 1 5)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Maleficul Costel elimină sau chiar schimbă unele valori din șirul al doilea. Acum Gigel vă pune la dispoziție două șiruri de numere naturale și roagă să stabiliți dacă al doilea șir poate obține prin scrierea repetată a primului șir și eliminarea unor elemente iar în caz afirmativ care este numărul minim de repetări ale primului șir prin care se poate obține șirul al doilea.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; – numărul de elemente ale primului șir, iar pe a doua linie &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale separate prin spații, reprezentând elementele primului șir. Linia a treia conține numărul &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; – numărul de elemente ale celui de-al doilea șir, iar a patra linie conține &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; numere naturale separate prin spații, reprezentând elementele șir șirului al doilea.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie numărul &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, reprezentând numărul minim de repetări ale primului șir prin care se poate obține ale doilea șir, sau valoarea &amp;lt;code&amp;gt;IMPOSIBIL&amp;lt;/code&amp;gt; dacă al doilea șir nu poate fi obținut prin scrierea repetată a primului șir și eliminarea unor valor..&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n , m ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
2 3 1 5&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
2 5 3 1 5 3 1 &lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Prin repetarea de trei ori a primului șir se obține șirul &amp;lt;code&amp;gt;2 3 1 5 2 3 1 5 2 3 1 5&amp;lt;/code&amp;gt; Prin eliminarea, în ordine a valorilor &amp;lt;code&amp;gt;3 1 2 2 5&amp;lt;/code&amp;gt; se obține șirul al doilea. Repetând șirul dat de mai puțin de trei ori, oricum a elimina valori din șirul rezultat nu se poate obține al doilea șir.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999&lt;br /&gt;
&lt;br /&gt;
2 3 1 5&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
2 5 3 1 5 3 1 &lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n,m):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=1000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    if not(1&amp;lt;=m&amp;lt;=1000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;#039;r&amp;#039;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;#039;w&amp;#039;) as fout:&lt;br /&gt;
    n = int(fin.readline())&lt;br /&gt;
    ver(n,10)&lt;br /&gt;
    a = list(map(int, fin.readline().split()))&lt;br /&gt;
    m = int(fin.readline())&lt;br /&gt;
    ver(10,m)&lt;br /&gt;
    b = list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    cnt = 1&lt;br /&gt;
    ok = True&lt;br /&gt;
    i, j = 0, 0&lt;br /&gt;
&lt;br /&gt;
    while j &amp;lt; m and ok:&lt;br /&gt;
        ivechi = i&lt;br /&gt;
        marit = False&lt;br /&gt;
        while i &amp;lt; n and a[i] != b[j]:&lt;br /&gt;
            i += 1&lt;br /&gt;
        if i == n:&lt;br /&gt;
            i = 0&lt;br /&gt;
            cnt += 1&lt;br /&gt;
            marit = True&lt;br /&gt;
            while i &amp;lt; ivechi and a[i] != b[j]:&lt;br /&gt;
                i += 1&lt;br /&gt;
        &lt;br /&gt;
        if i == ivechi and marit:&lt;br /&gt;
            # nu l-am gasit pe b[j] in a[], nu se poate&lt;br /&gt;
            ok = False&lt;br /&gt;
        else:&lt;br /&gt;
            i += 1&lt;br /&gt;
            j += 1&lt;br /&gt;
    &lt;br /&gt;
    if ok:&lt;br /&gt;
        fout.write(str(cnt))&lt;br /&gt;
    else:&lt;br /&gt;
        fout.write(&amp;quot;IMPOSIBIL&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
</feed>