<?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=4300_-_Secv_Fb</id>
	<title>4300 - Secv Fb - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=4300_-_Secv_Fb"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4300_-_Secv_Fb&amp;action=history"/>
	<updated>2026-06-17T09:31:24Z</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=4300_-_Secv_Fb&amp;diff=7694&amp;oldid=prev</id>
		<title>AntalKrisztian: Pagină nouă: == Cerinţa == Se citește un număr &#039;&#039;&#039;N&#039;&#039;&#039;, un număr &#039;&#039;&#039;K&#039;&#039;&#039; și apoi un șir cu &#039;&#039;&#039;N&#039;&#039;&#039; numere naturale. Determinați câte secvențe de lungime exact &#039;&#039;&#039;K&#039;&#039;&#039; au elementele distincte. Prin secvență înțelegem un set de elemente aflate pe poziții consecutive. == Date de intrare == Pe prima linie a fișierului &#039;&#039;&#039;secv_fbin.txt&#039;&#039;&#039; se găsesc două numere naturale, separate prin exact un spațiu, &#039;&#039;&#039;N&#039;&#039;&#039; și &#039;&#039;&#039;K&#039;&#039;&#039;. Pe linia a doua se găsesc cele &#039;&#039;&#039;N&#039;&#039;&#039; numere ale șir...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4300_-_Secv_Fb&amp;diff=7694&amp;oldid=prev"/>
		<updated>2023-12-09T15:24:45Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == Se citește un număr &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;, un număr &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; și apoi un șir cu &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere naturale. Determinați câte secvențe de lungime exact &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; au elementele distincte. Prin secvență înțelegem un set de elemente aflate pe poziții consecutive. == Date de intrare == Pe prima linie a fișierului &amp;#039;&amp;#039;&amp;#039;secv_fbin.txt&amp;#039;&amp;#039;&amp;#039; se găsesc două numere naturale, separate prin exact un spațiu, &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039;. Pe linia a doua se găsesc cele &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere ale șir...&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;
Se citește un număr &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;, un număr &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; și apoi un șir cu &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere naturale. Determinați câte secvențe de lungime exact &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; au elementele distincte. Prin secvență înțelegem un set de elemente aflate pe poziții consecutive.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Pe prima linie a fișierului &amp;#039;&amp;#039;&amp;#039;secv_fbin.txt&amp;#039;&amp;#039;&amp;#039; se găsesc două numere naturale, separate prin exact un spațiu, &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039;. Pe linia a doua se găsesc cele &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere ale șirului, separate prin câte un spațiu.numere întregi separate prin spaţii.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Pe prima linie a fișierului &amp;#039;&amp;#039;&amp;#039;secv_fbout.txt&amp;#039;&amp;#039;&amp;#039; se găsește un număr natural ce reprezintă valoarea cerută.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;2 &amp;amp;les; N &amp;amp;les; 100.000&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* Pentru &amp;#039;&amp;#039;&amp;#039;20&amp;#039;&amp;#039;&amp;#039; de puncte &amp;#039;&amp;#039;&amp;#039;K = 2&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* Pentru alte &amp;#039;&amp;#039;&amp;#039;20&amp;#039;&amp;#039;&amp;#039; de puncte &amp;#039;&amp;#039;&amp;#039;K = 3&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* Pentru alte &amp;#039;&amp;#039;&amp;#039;20&amp;#039;&amp;#039;&amp;#039; de puncte &amp;#039;&amp;#039;&amp;#039;4 &amp;amp;les; K &amp;amp;les; 10&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* Pentru alte &amp;#039;&amp;#039;&amp;#039;20&amp;#039;&amp;#039;&amp;#039; de puncte, &amp;#039;&amp;#039;&amp;#039;10 &amp;lt; K &amp;amp;les; n-1&amp;#039;&amp;#039;&amp;#039; și valorile din șir &amp;#039;&amp;#039;&amp;#039;&amp;amp;les; 100.000&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
* Pentru restul testelor &amp;#039;&amp;#039;&amp;#039;10 &amp;lt; K &amp;amp;les; n-1&amp;#039;&amp;#039;&amp;#039; și valorile din șir &amp;#039;&amp;#039;&amp;#039;&amp;amp;les; 2.000.000.000&amp;#039;&amp;#039;&amp;#039;; &lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; secv_fbin.txt&lt;br /&gt;
 8 3&lt;br /&gt;
 3 2 4 3 4 5 6 7&lt;br /&gt;
; sortcif2out.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 5&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; secv_fbin.txt&lt;br /&gt;
 jfgjfkljd&lt;br /&gt;
; sortcif2out.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
# Funcția de validare verifică dacă datele de intrare sunt în intervalul specificat&lt;br /&gt;
def validare(n_validare, k_validare, numere_validare):&lt;br /&gt;
    if n_validare &amp;lt; 2 or n_validare &amp;gt; 100000:&lt;br /&gt;
        raise ValueError&lt;br /&gt;
    if k_validare &amp;lt; 2 or k_validare &amp;gt; n_validare:&lt;br /&gt;
        raise ValueError&lt;br /&gt;
    if k_validare == 2 or k_validare == 3 or (4 &amp;lt;= k_validare &amp;lt;= 10) or (10 &amp;lt; k_validare &amp;lt;= n_validare - 1):&lt;br /&gt;
        for numar in numere_validare:&lt;br /&gt;
            if numar &amp;lt; 1 or numar &amp;gt; 100000:&lt;br /&gt;
                raise ValueError&lt;br /&gt;
    else:&lt;br /&gt;
        for numar in numere_validare:&lt;br /&gt;
            if numar &amp;lt; 1 or numar &amp;gt; 2000000000:&lt;br /&gt;
                raise ValueError&lt;br /&gt;
    file_out.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Funcția secvente_distincte calculează câte secvențe de lungime exact K au elementele distincte&lt;br /&gt;
def secvente_distincte(numere, k):&lt;br /&gt;
    raspunsuri = 0&lt;br /&gt;
    for i in range(len(numere) - k + 1):&lt;br /&gt;
        if len(set(numere[i:i+k])) == k:&lt;br /&gt;
            raspunsuri += 1&lt;br /&gt;
    return raspunsuri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    file_in = open(&amp;quot;secv_fbin.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    file_out = open(&amp;quot;secv_fbout.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        # Citim numărul de numere și lungimea secvenței&lt;br /&gt;
        n_main, k_main = map(int, file_in.readline().split())&lt;br /&gt;
        # Citim numerele&lt;br /&gt;
        numere_main = list(map(int, file_in.readline().split()))&lt;br /&gt;
        # Validăm datele de intrare&lt;br /&gt;
        validare(n_main, k_main, numere_main)&lt;br /&gt;
        # Calculăm câte secvențe de lungime exact K au elementele distincte&lt;br /&gt;
        raspuns = secvente_distincte(numere_main, k_main)&lt;br /&gt;
        # Scriem răspunsul în fișierul de ieșire&lt;br /&gt;
        file_out.write(str(raspuns) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    # Dacă datele de intrare nu sunt valide, afișăm un mesaj de eroare&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        file_out.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
    # Dacă datele de intrare sunt incomplete, afișăm un mesaj de eroare&lt;br /&gt;
    except IndexError:&lt;br /&gt;
        file_out.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>AntalKrisztian</name></author>
	</entry>
</feed>