<?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=2525_-_Cioc</id>
	<title>2525 - Cioc - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2525_-_Cioc"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2525_-_Cioc&amp;action=history"/>
	<updated>2026-05-01T07:26:35Z</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=2525_-_Cioc&amp;diff=8827&amp;oldid=prev</id>
		<title>Zmicala Narcis: Pagină nouă: == Cioc == &#039;&#039;&#039;Cioc&#039;&#039;&#039;, un elev abia aterizat în clasa a IX-a, primește de la doamna profesor de informatică un șir de &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale pe care trebuie să îl prelucreze. Astfel, băiatul trebuie să scrie după fiecare dintre cele &#039;&#039;&#039;k&#039;&#039;&#039; cele mai mici elemente dublul lor. Dacă cel mai mare dintre aceste numere se repetă și deja se depășesc cele &#039;&#039;&#039;k&#039;&#039;&#039; elemente prevăzute, doamna profesor îi dă libertatea băiatului de a modifica valoarea lui &#039;&#039;&#039;k&#039;&#039;&#039; astfe...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2525_-_Cioc&amp;diff=8827&amp;oldid=prev"/>
		<updated>2024-01-03T01:17:59Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cioc == &amp;#039;&amp;#039;&amp;#039;Cioc&amp;#039;&amp;#039;&amp;#039;, un elev abia aterizat în clasa a IX-a, primește de la doamna profesor de informatică un șir de &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale pe care trebuie să îl prelucreze. Astfel, băiatul trebuie să scrie după fiecare dintre cele &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; cele mai mici elemente dublul lor. Dacă cel mai mare dintre aceste numere se repetă și deja se depășesc cele &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; elemente prevăzute, doamna profesor îi dă libertatea băiatului de a modifica valoarea lui &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; astfe...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Cioc ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cioc&amp;#039;&amp;#039;&amp;#039;, un elev abia aterizat în clasa a IX-a, primește de la doamna profesor de informatică un șir de &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale pe care trebuie să îl prelucreze. Astfel, băiatul trebuie să scrie după fiecare dintre cele &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; cele mai mici elemente dublul lor. Dacă cel mai mare dintre aceste numere se repetă și deja se depășesc cele &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; elemente prevăzute, doamna profesor îi dă libertatea băiatului de a modifica valoarea lui &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; astfel încât să cuprindă și aceste valori. De exemplu, dacă &amp;#039;&amp;#039;&amp;#039;n = 7&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;v[] = {1, 4, 6, 2, 3, 4, 5}&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;k = 4&amp;#039;&amp;#039;&amp;#039;, atunci, în urma prelucrării, șirul &amp;#039;&amp;#039;&amp;#039;v&amp;#039;&amp;#039;&amp;#039; devine &amp;#039;&amp;#039;&amp;#039;{1, 2, 4, 8, 6, 2, 4, 3, 6, 4, 8, 5}&amp;#039;&amp;#039;&amp;#039;, și deci &amp;#039;&amp;#039;&amp;#039;kfinal=5&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Cunoscându-se &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, șirul &amp;#039;&amp;#039;&amp;#039;v&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;, să se afișeze:&lt;br /&gt;
* 1. Numărul &amp;#039;&amp;#039;&amp;#039;kfinal&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* 2. Vectorul după prelucrare.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;ciocin.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039; (mereu &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; sau &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;, reprezentând cerința ce trebuie rezolvată), &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;, iar următoarea linie va conține n numere întregi, reprezentând elementele vectorului inițial.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;ciocout.txt&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie:&lt;br /&gt;
* Dacă &amp;#039;&amp;#039;&amp;#039;c = 1&amp;#039;&amp;#039;&amp;#039;, atunci numărul &amp;#039;&amp;#039;&amp;#039;kfinal&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* Dacă &amp;#039;&amp;#039;&amp;#039;c = 2&amp;#039;&amp;#039;&amp;#039;, atunci vectorul după prelucrare.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ n, k ≤ 100.000&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1≤v[i]≤2^60&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* Pentru &amp;#039;&amp;#039;&amp;#039;40%&amp;#039;&amp;#039;&amp;#039; din teste, &amp;#039;&amp;#039;&amp;#039;c=1&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; ciocin.txt&lt;br /&gt;
: 1 7 4&lt;br /&gt;
: 1 4 6 2 3 4 5&lt;br /&gt;
; ciocout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 5&lt;br /&gt;
== Explicație ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;-ul inițial nu este suficient de cuprinzător (numărul &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; se repetă).&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; ciocin.txt&lt;br /&gt;
: 2 7 4&lt;br /&gt;
: 1 4 6 2 3 4 5&lt;br /&gt;
; ciocout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 1 2 4 8 6 2 4 3 6 4 8 5&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Acesta este exemplul din enunț.&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; ciocin.txt&lt;br /&gt;
: 2 7 4&lt;br /&gt;
: 1 4 6 2 3 4 1000000001&lt;br /&gt;
; ciocout.txt&lt;br /&gt;
: Datele introduse nu corespund restricțiilor impuse.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# 2525 - Cioc&lt;br /&gt;
def validare(n_validare, k_validare, sir_validare):           # functia de validare a datelor de intrare&lt;br /&gt;
    if not (1 &amp;lt;= n_validare &amp;lt;= 100000 and 1 &amp;lt;= k_validare &amp;lt;= 100000):&lt;br /&gt;
        raise ValueError&lt;br /&gt;
&lt;br /&gt;
    for v in sir_validare:&lt;br /&gt;
        if not (1 &amp;lt;= v &amp;lt;= 260):&lt;br /&gt;
            raise ValueError&lt;br /&gt;
&lt;br /&gt;
    fisier_iesire.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def prelucrare(n_prelucrare, k_prelucrare, sir_prelucrare):         # functia de rezolvare a problemei&lt;br /&gt;
    sir_sortat = sorted([(v, i) for i, v in enumerate(sir_prelucrare)])&lt;br /&gt;
    k_final_prelucrare = k_prelucrare&lt;br /&gt;
    while k_final_prelucrare &amp;lt; n_prelucrare and sir_sortat[k_final_prelucrare][0] == sir_sortat[k_prelucrare-1][0]:&lt;br /&gt;
        k_final_prelucrare += 1&lt;br /&gt;
&lt;br /&gt;
    sir_prelucrat_prelucrare = []&lt;br /&gt;
    for v, i in sir_sortat[:k_final_prelucrare]:&lt;br /&gt;
        sir_prelucrat_prelucrare.append((i, v))&lt;br /&gt;
        sir_prelucrat_prelucrare.append((i, v*2))&lt;br /&gt;
    sir_prelucrat_prelucrare.sort()&lt;br /&gt;
&lt;br /&gt;
    return k_final_prelucrare, [v for i, v in sir_prelucrat_prelucrare]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    fisier_intrare = open(&amp;quot;ciocin.txt&amp;quot;, &amp;quot;r&amp;quot;)         # declararea fisierelor&lt;br /&gt;
    fisier_iesire = open(&amp;quot;ciocout.txt&amp;quot;, &amp;quot;w&amp;quot;)       # fisierul out trebuie declarat cu optiunea &amp;quot;w&amp;quot; (write)&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        c, n, k = map(int, fisier_intrare.readline().split())&lt;br /&gt;
        sir = list(map(int, fisier_intrare.readline().split()))&lt;br /&gt;
&lt;br /&gt;
        validare(n, k, sir)                 # apelul functiei de validare&lt;br /&gt;
&lt;br /&gt;
        k_final, sir_prelucrat = prelucrare(n, k, sir)  # apelul functiei de rezolvare&lt;br /&gt;
&lt;br /&gt;
        if c == 1:&lt;br /&gt;
            fisier_iesire.write(str(k_final) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            fisier_iesire.write(&amp;quot; &amp;quot;.join(map(str, sir_prelucrat)) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        fisier_iesire.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zmicala Narcis</name></author>
	</entry>
</feed>