<?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=1123_-_Iepurasi</id>
	<title>1123 - Iepurasi - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1123_-_Iepurasi"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1123_-_Iepurasi&amp;action=history"/>
	<updated>2026-05-01T03:00:32Z</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=1123_-_Iepurasi&amp;diff=9622&amp;oldid=prev</id>
		<title>Raul: Pagină nouă: Se construieşte un şir de numere naturale care respectă restricţiile:  * primul număr din şir este &lt;code&gt;9&lt;/code&gt;; * numerele se generează în ordine strict crescătoare; * şirul conţine toate numerele formate doar cu cifrele &lt;code&gt;7&lt;/code&gt;, &lt;code&gt;8&lt;/code&gt; şi &lt;code&gt;9&lt;/code&gt; cu proprietatea că numărul cifrelor &lt;code&gt;9&lt;/code&gt; este mai mare sau egal decât numărul cifrelor &lt;code&gt;8&lt;/code&gt; şi numărul cifrelor &lt;code&gt;8&lt;/code&gt; este mai mare sau egal decât numărul cif...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1123_-_Iepurasi&amp;diff=9622&amp;oldid=prev"/>
		<updated>2024-02-12T15:13:25Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Se construieşte un şir de numere naturale care respectă restricţiile:  * primul număr din şir este &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;; * numerele se generează în ordine strict crescătoare; * şirul conţine toate numerele formate doar cu cifrele &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; cu proprietatea că numărul cifrelor &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; este mai mare sau egal decât numărul cifrelor &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; şi numărul cifrelor &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; este mai mare sau egal decât numărul cif...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Se construieşte un şir de numere naturale care respectă restricţiile:&lt;br /&gt;
&lt;br /&gt;
* primul număr din şir este &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;;&lt;br /&gt;
* numerele se generează în ordine strict crescătoare;&lt;br /&gt;
* şirul conţine toate numerele formate doar cu cifrele &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; cu proprietatea că numărul cifrelor &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; este mai mare sau egal decât numărul cifrelor &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; şi numărul cifrelor &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; este mai mare sau egal decât numărul cifrelor &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;. Primii &amp;lt;code&amp;gt;14&amp;lt;/code&amp;gt; termeni ai şirului, în ordine, sunt:  &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;89&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;98&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;99&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;789&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;798&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;879&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;897&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;899&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;978&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;987&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;989&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;998&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;999&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pornind de la aceste numere, Liv a inventat un joc interactiv: &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; iepuraşi sunt aşezaţi în şir, fiecare având câte un cartonaş. Fiecare cartonaş are două feţe, o faţă albă pe care este inscripţionat un număr din acest şir şi o faţă gri, pe care este inscripţionată poziţia acelui număr în şir, poziţii numerotate în ordine, începând cu valoarea &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exemple.&amp;#039;&amp;#039;&amp;#039; Cartonaşul care are pe faţa gri inscripţionat numărul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; va avea pe faţa albă inscripţionat numărul &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;, iar cartonaşul care are pe faţa gri inscripţionat numărul &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; va avea pe faţa albă inscripţionat numărul &amp;lt;code&amp;gt;789&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Iepuraşii sunt aşezaţi într-o ordine oarecare şi ţin cartonaşele astfel încât să se vadă faţa gri. Jocul constă în a rearanja iepuraşii de la stânga la dreapta, descrescător după numerele inscripţionate pe feţele gri, având la dispoziţie doar operaţia &amp;lt;code&amp;gt;TAP&amp;lt;/code&amp;gt; pe un iepuraş. Când se aplică operaţia &amp;lt;code&amp;gt;TAP&amp;lt;/code&amp;gt; unui iepuraş  atunci secvenţa de iepuraşi,  începând de la cel pe care s-a făcut &amp;lt;code&amp;gt;TAP&amp;lt;/code&amp;gt; şi până la sfârşitul şirului (spre dreapta), este oglindită (ca în imaginea de mai sus). După oglindire, toţi iepuraşii din acea secvenţă ţin cartonaşele astfel încât să se vadă faţa albă. Se doreşte aplicarea unui număr cât mai mic de operaţii TAP pentru rearanjarea iepuraşilor.&lt;br /&gt;
&lt;br /&gt;
= Cerinţe =&lt;br /&gt;
Scrieţi un program care să citească numerele naturale &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; (reprezentând numărul de iepuraşi) şi &amp;lt;code&amp;gt;a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;,…, &amp;lt;code&amp;gt;a&amp;lt;sub&amp;gt;N&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;  (reprezentând, în ordine,  numerele inscripţionate pe feţele gri) și care să determine:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;a)&amp;#039;&amp;#039;&amp;#039; Numărul minim de operaţii &amp;lt;code&amp;gt;TAP&amp;lt;/code&amp;gt; necesare rearanjării iepuraşilor;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;b)&amp;#039;&amp;#039;&amp;#039; Cel mai mic număr aflat pe o faţă albă care nu se vede, în cazul în care au rămas cartonaşe neîntoarse. Dacă toate cartonaşele au fost întoarse  (la toate fiind vizibilă faţa albă) se va afişa cel mai mare număr aflat pe o faţă albă a unui cartonaş.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;iepurasi.in&amp;lt;/code&amp;gt; conține pe prima linie numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; reprezentând numărul de iepuraşi. A doua linie a fişierului conţine, în ordine, cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere: &amp;lt;code&amp;gt;a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;sub&amp;gt;a&amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, separate prin câte un spaţiu, reprezentând în ordine, numerele inscripţionate pe feţele gri ale cartonașelor.&amp;lt;/sub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;iepurasi.out&amp;lt;/code&amp;gt; va conține pe prima linie un număr reprezentând numărul minim de operaţii &amp;lt;code&amp;gt;TAP&amp;lt;/code&amp;gt; necesare rearanjării iepuraşilor. A doua linie va conține un număr reprezentând cel mai mic număr aflat pe o faţă albă care nu se vede (în cazul în care au rămas cartonaşe neîntoarse), respectiv cel mai mare număr aflat pe o faţă albă a unui cartonaş, în cazul în care toate cartonaşele au fost întoarse (la toate fiind vizibilă faţa albă).&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ N ≤ 10000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ a&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; ≤ 10000&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;1≤i≤N&amp;lt;/code&amp;gt;);&lt;br /&gt;
* &amp;lt;code&amp;gt;N, a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;a&amp;lt;sub&amp;gt;N&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt; sunt numere naturale;&lt;br /&gt;
* pentru rezolvarea cerinţei a) se acordă 50% din punctaj, iar pentru cerinţa b) se acordă 50% din punctaj.&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;iepurasi.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 5 &lt;br /&gt;
 14 5 8 9 10&lt;br /&gt;
&amp;lt;code&amp;gt;iepurasi.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 1&lt;br /&gt;
 999&lt;br /&gt;
&lt;br /&gt;
= Explicație =&lt;br /&gt;
Se aplică o singură operaţie &amp;lt;code&amp;gt;TAP&amp;lt;/code&amp;gt; pe iepuraşul cu numărul de ordine &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;. Cartonaşul neîntors are numărul de ordine &amp;lt;code&amp;gt;14&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;999&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Încărcare soluție ==&lt;br /&gt;
&lt;br /&gt;
=== Lipește codul aici ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
f = open(&amp;quot;iepurasi.txtin&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
g = open(&amp;quot;iepurasi.txtout&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
toate = [0] * 200001&lt;br /&gt;
ncurent = 0&lt;br /&gt;
N = 0&lt;br /&gt;
a = [0] * 10001&lt;br /&gt;
dim_sir = 0&lt;br /&gt;
TAP = 0&lt;br /&gt;
nr1 = 0&lt;br /&gt;
nr2 = 0&lt;br /&gt;
viz = [False] * 10001&lt;br /&gt;
fr7 = [0] * 200001&lt;br /&gt;
fr8 = [0] * 200001&lt;br /&gt;
fr9 = [0] * 200001&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    global N, a, TAP, viz&lt;br /&gt;
    i = 0&lt;br /&gt;
    j = 0&lt;br /&gt;
    k = 0&lt;br /&gt;
    maxi = 0&lt;br /&gt;
    imax = 0&lt;br /&gt;
    aux = 0&lt;br /&gt;
    c7 = 0&lt;br /&gt;
    c8 = 0&lt;br /&gt;
    c9 = 0&lt;br /&gt;
&lt;br /&gt;
    #citire&lt;br /&gt;
    N = int(f.readline())&lt;br /&gt;
    a = list(map(int, f.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    #sortare descrescatoare&lt;br /&gt;
    for i in range(1, N + 1):&lt;br /&gt;
        imax = i&lt;br /&gt;
        maxi = a[i]&lt;br /&gt;
        for j in range(i + 1, N + 1):&lt;br /&gt;
            if a[j] &amp;gt; maxi:&lt;br /&gt;
                maxi = a[j]&lt;br /&gt;
                imax = j&lt;br /&gt;
        if imax != i:&lt;br /&gt;
            if a[N] != maxi:&lt;br /&gt;
                TAP += 1&lt;br /&gt;
                #TAP pe iepurasul imax&lt;br /&gt;
                for j in range(imax, k, -1):&lt;br /&gt;
                    aux = a[j]&lt;br /&gt;
                    a[j] = a[k]&lt;br /&gt;
                    a[k] = aux&lt;br /&gt;
                    viz[j] = True&lt;br /&gt;
                    viz[k] = True&lt;br /&gt;
            #TAP pe iepurasul i&lt;br /&gt;
            if a[i] != maxi:&lt;br /&gt;
                TAP += 1&lt;br /&gt;
                for j in range(i, k, -1):&lt;br /&gt;
                    aux = a[j]&lt;br /&gt;
                    a[j] = a[k]&lt;br /&gt;
                    a[k] = aux&lt;br /&gt;
                    viz[j] = True&lt;br /&gt;
                    viz[k] = True&lt;br /&gt;
&lt;br /&gt;
    #det cartonas minim/maxim&lt;br /&gt;
    if viz[1]:&lt;br /&gt;
        k = a[1]&lt;br /&gt;
    else:&lt;br /&gt;
        i = 1&lt;br /&gt;
        while not viz[i] and i &amp;lt;= N:&lt;br /&gt;
            i += 1&lt;br /&gt;
        k = a[i - 1]&lt;br /&gt;
&lt;br /&gt;
    #constructie sir de numere cu cifrele 7,8,9 pana la numarul de pe pozitia k&lt;br /&gt;
    fr7[1] = 1&lt;br /&gt;
    fr8[2] = 1&lt;br /&gt;
    fr9[3] = 1&lt;br /&gt;
    toate[1] = 7&lt;br /&gt;
    toate[2] = 8&lt;br /&gt;
    toate[3] = 9&lt;br /&gt;
    dim_sir = 0&lt;br /&gt;
    nr1 = 1&lt;br /&gt;
    nr2 = 3&lt;br /&gt;
    while dim_sir &amp;lt; k:&lt;br /&gt;
        c7 = fr7[nr1]&lt;br /&gt;
        c8 = fr8[nr1]&lt;br /&gt;
        c9 = fr9[nr1]&lt;br /&gt;
        ncurent = toate[nr1]&lt;br /&gt;
        nr1 += 1&lt;br /&gt;
        nr2 -= 1&lt;br /&gt;
        if c7 &amp;lt;= c8 and c8 &amp;lt;= c9:&lt;br /&gt;
            dim_sir += 1&lt;br /&gt;
        fr7[nr1 + nr2] = c7 + 1&lt;br /&gt;
        fr8[nr1 + nr2] = c8&lt;br /&gt;
        fr9[nr1 + nr2] = c9&lt;br /&gt;
        toate[nr1 + nr2] = 10 * ncurent + 7&lt;br /&gt;
        nr2 += 1&lt;br /&gt;
        fr7[nr1 + nr2] = c7&lt;br /&gt;
        fr8[nr1 + nr2] = c8 + 1&lt;br /&gt;
        fr9[nr1 + nr2] = c9&lt;br /&gt;
        toate[nr1 + nr2] = 10 * ncurent + 8&lt;br /&gt;
        nr2 += 1&lt;br /&gt;
        fr7[nr1 + nr2] = c7&lt;br /&gt;
        fr8[nr1 + nr2] = c8&lt;br /&gt;
        fr9[nr1 + nr2] = c9 + 1&lt;br /&gt;
        toate[nr1 + nr2] = 10 * ncurent + 9&lt;br /&gt;
        nr2 += 1&lt;br /&gt;
&lt;br /&gt;
    #afisare&lt;br /&gt;
    g.write(str(TAP) + &amp;quot;\n&amp;quot; + str(ncurent) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    f.close()&lt;br /&gt;
    g.close()&lt;br /&gt;
    sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raul</name></author>
	</entry>
</feed>