<?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=1439_-_Sir6</id>
	<title>1439 - Sir6 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1439_-_Sir6"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1439_-_Sir6&amp;action=history"/>
	<updated>2026-05-01T23:24:49Z</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=1439_-_Sir6&amp;diff=8890&amp;oldid=prev</id>
		<title>Zmicala Narcis: Pagină nouă: Se dă un şir de &#039;&#039;&#039;N&#039;&#039;&#039; numere naturale. Din acest şir, putem forma un şir comprimat de forma: &#039;&#039;&#039;a[1], b[1], a[2], b[2], …, a[x], b[x]&#039;&#039;&#039;, din care înţelegem că numărul &#039;&#039;&#039;a[1]&#039;&#039;&#039; apare pe primele &#039;&#039;&#039;b[1]&#039;&#039;&#039; poziţii, &#039;&#039;&#039;a[2]&#039;&#039;&#039; apare pe următoarele &#039;&#039;&#039;b[2]&#039;&#039;&#039; poziţii…, iar &#039;&#039;&#039;a[x]&#039;&#039;&#039; apare pe ultimele &#039;&#039;&#039;b[x]&#039;&#039;&#039; poziţii. De exemplu, dacă şirul dat este &#039;&#039;&#039;1 1 5 5 5 2&#039;&#039;&#039;, atunci şirul comprimat va fi &#039;&#039;&#039;1 2 5 3 2 1&#039;&#039;&#039;. == Cerința == Să se determine: a) Lu...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1439_-_Sir6&amp;diff=8890&amp;oldid=prev"/>
		<updated>2024-01-03T16:34:40Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Se dă un şir de &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere naturale. Din acest şir, putem forma un şir comprimat de forma: &amp;#039;&amp;#039;&amp;#039;a[1], b[1], a[2], b[2], …, a[x], b[x]&amp;#039;&amp;#039;&amp;#039;, din care înţelegem că numărul &amp;#039;&amp;#039;&amp;#039;a[1]&amp;#039;&amp;#039;&amp;#039; apare pe primele &amp;#039;&amp;#039;&amp;#039;b[1]&amp;#039;&amp;#039;&amp;#039; poziţii, &amp;#039;&amp;#039;&amp;#039;a[2]&amp;#039;&amp;#039;&amp;#039; apare pe următoarele &amp;#039;&amp;#039;&amp;#039;b[2]&amp;#039;&amp;#039;&amp;#039; poziţii…, iar &amp;#039;&amp;#039;&amp;#039;a[x]&amp;#039;&amp;#039;&amp;#039; apare pe ultimele &amp;#039;&amp;#039;&amp;#039;b[x]&amp;#039;&amp;#039;&amp;#039; poziţii. De exemplu, dacă şirul dat este &amp;#039;&amp;#039;&amp;#039;1 1 5 5 5 2&amp;#039;&amp;#039;&amp;#039;, atunci şirul comprimat va fi &amp;#039;&amp;#039;&amp;#039;1 2 5 3 2 1&amp;#039;&amp;#039;&amp;#039;. == Cerința == Să se determine: a) Lu...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Se dă un şir de &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere naturale. Din acest şir, putem forma un şir comprimat de forma: &amp;#039;&amp;#039;&amp;#039;a[1], b[1], a[2], b[2], …, a[x], b[x]&amp;#039;&amp;#039;&amp;#039;, din care înţelegem că numărul &amp;#039;&amp;#039;&amp;#039;a[1]&amp;#039;&amp;#039;&amp;#039; apare pe primele &amp;#039;&amp;#039;&amp;#039;b[1]&amp;#039;&amp;#039;&amp;#039; poziţii, &amp;#039;&amp;#039;&amp;#039;a[2]&amp;#039;&amp;#039;&amp;#039; apare pe următoarele &amp;#039;&amp;#039;&amp;#039;b[2]&amp;#039;&amp;#039;&amp;#039; poziţii…, iar &amp;#039;&amp;#039;&amp;#039;a[x]&amp;#039;&amp;#039;&amp;#039; apare pe ultimele &amp;#039;&amp;#039;&amp;#039;b[x]&amp;#039;&amp;#039;&amp;#039; poziţii.&lt;br /&gt;
De exemplu, dacă şirul dat este &amp;#039;&amp;#039;&amp;#039;1 1 5 5 5 2&amp;#039;&amp;#039;&amp;#039;, atunci şirul comprimat va fi &amp;#039;&amp;#039;&amp;#039;1 2 5 3 2 1&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Să se determine:&lt;br /&gt;
a) Lungimea celei mai lungi secvenţe formată din numere egale.&lt;br /&gt;
b) Şirul comprimat pentru şirul dat.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;sir6in.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;. Pe următoarea linie se găseşte un şir format din &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere naturale.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;sir6out.txt&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie:&lt;br /&gt;
a) Dacă &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; este &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;, lungimea celei mai lungi secvenţe, reprezentând răspunsul la cerinţa a).&lt;br /&gt;
b) Dacă &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; este &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;, şirul comprimat, reprezentând răspunsul la cerinţa b).&lt;br /&gt;
caz contrar, se va afișa mesajul:&amp;quot; Datele de intrare nu corespund restrictiilor impuse&amp;quot;&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;N &amp;lt;= 100.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Numerele din şir nu depăşesc &amp;#039;&amp;#039;&amp;#039;1.000.000&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; este &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;.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; sir6in.txt&lt;br /&gt;
: 1 6&lt;br /&gt;
: 1 1 5 5 5 2&lt;br /&gt;
; sir6out.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 3&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Pentru acest test &amp;#039;&amp;#039;&amp;#039;P = 1&amp;#039;&amp;#039;&amp;#039;, deci se va rezolva doar cerinţa a). Secvenţa cea mai lungă formată din numere egale este: &amp;#039;&amp;#039;&amp;#039;5 5 5&amp;#039;&amp;#039;&amp;#039; şi are lungimea &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; sir6in.txt&lt;br /&gt;
: 2 6&lt;br /&gt;
: 1 1 5 5 5 2&lt;br /&gt;
; sir6out.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 1 2 5 3 2 1&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Pentru acest test &amp;#039;&amp;#039;&amp;#039;P = 2&amp;#039;&amp;#039;&amp;#039;, deci se va rezolva doar cerinţa b). Numărul &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; apare de &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; ori, numărul &amp;#039;&amp;#039;&amp;#039;5&amp;#039;&amp;#039;&amp;#039; apare de &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; ori, iar numărul &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; apare o singură dată. Prin urmare, şirul comprimat este &amp;#039;&amp;#039;&amp;#039;1 2 5 3 2 1&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; sir6in.txt&lt;br /&gt;
: 2&lt;br /&gt;
: 1 2 3 4 5 1000000001&lt;br /&gt;
: 2&lt;br /&gt;
: 1 3&lt;br /&gt;
: 2 4&lt;br /&gt;
; sir6out.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;
# 1439 - Sir6&lt;br /&gt;
from itertools import groupby&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare(p, numarde_elemente, sirul):           # functia de validare a datelor de intrare&lt;br /&gt;
    if p not in [1, 2] or not (1 &amp;lt;= numarde_elemente &amp;lt;= 100000):&lt;br /&gt;
        raise ValueError&lt;br /&gt;
&lt;br /&gt;
    if any(not (0 &amp;lt;= element &amp;lt;= 1000000) for element in sirul):&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 proceseaza_sir(p, sirul):                     # functia de rezolvare&lt;br /&gt;
    if p == 1:&lt;br /&gt;
        lungime_maxima = max(len(list(grup)) for _, grup in groupby(sirul))&lt;br /&gt;
        fisier_iesire.write(f&amp;quot;{lungime_maxima}\n&amp;quot;)&lt;br /&gt;
    elif p == 2:&lt;br /&gt;
        sir_comprimat = [f&amp;quot;{k} {len(list(grup))}&amp;quot; for k, grup in groupby(sirul)]&lt;br /&gt;
        fisier_iesire.write(&amp;quot; &amp;quot;.join(sir_comprimat) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    fisier_intrare = open(&amp;quot;sir6in.txt&amp;quot;, &amp;quot;r&amp;quot;)         # declararea fisierelor&lt;br /&gt;
    fisier_iesire = open(&amp;quot;sir6out.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;
        P, numar_elemente = map(int, fisier_intrare.readline().split())&lt;br /&gt;
        sir = list(map(int, fisier_intrare.readline().split()))&lt;br /&gt;
&lt;br /&gt;
        validare(P, numar_elemente, sir)                 # apelul functiei de validare&lt;br /&gt;
        proceseaza_sir(P, sir)               # apelul functiei de rezolvare&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>