<?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=2789_-_Cb3</id>
	<title>2789 - Cb3 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2789_-_Cb3"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2789_-_Cb3&amp;action=history"/>
	<updated>2026-06-17T09:11:33Z</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=2789_-_Cb3&amp;diff=7693&amp;oldid=prev</id>
		<title>AntalKrisztian: Pagină nouă: Se consideră un șir de numere naturale nenule &#039;&#039;&#039;a[1], a[2], ..., a[n]&#039;&#039;&#039;. Asupra șirului se efectuează &#039;&#039;&#039;Q&#039;&#039;&#039; interogări de forma: &#039;&#039;&#039;care este numărul maxim de elemente ale șirului a căror sumă nu depășește valoarea S&#039;&#039;&#039; ? == Cerinţa == Trebuie să răspundeți la cele &#039;&#039;&#039;Q&#039;&#039;&#039; interogări. == Date de intrare == Fișierul de intrare &#039;&#039;&#039;cb3in.txt&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;Q&#039;&#039;&#039;. Pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale nenule, separate pri...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2789_-_Cb3&amp;diff=7693&amp;oldid=prev"/>
		<updated>2023-12-09T14:57:56Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Se consideră un șir de numere naturale nenule &amp;#039;&amp;#039;&amp;#039;a[1], a[2], ..., a[n]&amp;#039;&amp;#039;&amp;#039;. Asupra șirului se efectuează &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; interogări de forma: &amp;#039;&amp;#039;&amp;#039;care este numărul maxim de elemente ale șirului a căror sumă nu depășește valoarea S&amp;#039;&amp;#039;&amp;#039; ? == Cerinţa == Trebuie să răspundeți la cele &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; interogări. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;cb3in.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039;. Pe a doua linie &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale nenule, separate pri...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Se consideră un șir de numere naturale nenule &amp;#039;&amp;#039;&amp;#039;a[1], a[2], ..., a[n]&amp;#039;&amp;#039;&amp;#039;. Asupra șirului se efectuează &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; interogări de forma: &amp;#039;&amp;#039;&amp;#039;care este numărul maxim de elemente ale șirului a căror sumă nu depășește valoarea S&amp;#039;&amp;#039;&amp;#039; ?&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Trebuie să răspundeți la cele &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; interogări.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;cb3in.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039;. Pe a doua linie &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale nenule, separate prin spații, ce reprezintă elementele șirului. Pe următoarele &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; linii se află sumele aferente celor &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; interogări.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;cb3out.txt&amp;#039;&amp;#039;&amp;#039; va conține pe câte o linie răspunsurile la cele &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; interogări.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; n &amp;amp;les; 10.000&lt;br /&gt;
* 1 &amp;amp;les; Q &amp;amp;les; 100.000&lt;br /&gt;
* 1 &amp;amp;les; S &amp;amp;les; 2.000.000.000&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât &amp;#039;&amp;#039;&amp;#039;1.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; cb3in.txt&lt;br /&gt;
 5 3&lt;br /&gt;
 1 2 3 4 5&lt;br /&gt;
 6&lt;br /&gt;
 17&lt;br /&gt;
 5&lt;br /&gt;
; cb3out.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 3&lt;br /&gt;
 5&lt;br /&gt;
 2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; cb3in.txt&lt;br /&gt;
 fhfthtfhft&lt;br /&gt;
; cb3out.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&amp;lt;br&amp;gt;&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, q_validare, numere_validare, sume_validare):&lt;br /&gt;
    # Verificăm dacă n este în intervalul 1-10000&lt;br /&gt;
    if n_validare &amp;lt; 1 or n_validare &amp;gt; 10000:&lt;br /&gt;
        raise ValueError  # Ridicăm o eroare dacă n nu este în intervalul 1-10000&lt;br /&gt;
    # Verificăm dacă Q este în intervalul 1-100000&lt;br /&gt;
    if q_validare &amp;lt; 1 or q_validare &amp;gt; 100000:&lt;br /&gt;
        raise ValueError  # Ridicăm o eroare dacă Q nu este în intervalul 1-100000&lt;br /&gt;
    for numar in numere_validare:    # Parcurgem lista de numere&lt;br /&gt;
        # Verificăm dacă numărul este mai mic decât 1000000&lt;br /&gt;
        if numar &amp;gt;= 1000000:&lt;br /&gt;
            raise ValueError&lt;br /&gt;
    for suma in sume_validare:  # Parcurgem lista de sume&lt;br /&gt;
        # Verificăm dacă suma este în intervalul 1-2000000000&lt;br /&gt;
        if suma &amp;lt; 1 or suma &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 max_elemente calculează numărul maxim de elemente ale șirului a căror sumă nu depășește valoarea S&lt;br /&gt;
def max_elemente(numere, sume):&lt;br /&gt;
    numere.sort()  # Sortăm numerele în ordine crescătoare&lt;br /&gt;
    raspunsuri_elemente = []  # Inițializăm lista de răspunsuri&lt;br /&gt;
    for S in sume:  # Pentru fiecare sumă S&lt;br /&gt;
        suma = 0&lt;br /&gt;
        nr_elemente = 0&lt;br /&gt;
        for numar in numere:  # Pentru fiecare număr din șir&lt;br /&gt;
            if suma + numar &amp;lt;= S:  # Dacă suma curentă plus numărul curent nu depășește S&lt;br /&gt;
                suma += numar  # Adăugăm numărul la sumă&lt;br /&gt;
                nr_elemente += 1  # Creștem numărul de elemente&lt;br /&gt;
            else:  # Dacă suma curentă plus numărul curent depășește S&lt;br /&gt;
                break  # Întrerupem bucla&lt;br /&gt;
        raspunsuri_elemente.append(nr_elemente)  # Adăugăm numărul de elemente la lista de răspunsuri&lt;br /&gt;
    return raspunsuri_elemente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    file_in = open(&amp;quot;cb3in.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    file_out = open(&amp;quot;cb3out.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        # Citim numărul de numere și numărul de interogări&lt;br /&gt;
        n_main, Q_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;
        # Citim sumele&lt;br /&gt;
        sume_main = [int(file_in.readline()) for _ in range(Q_main)]&lt;br /&gt;
        # Validăm datele de intrare&lt;br /&gt;
        validare(n_main, Q_main, numere_main, sume_main)&lt;br /&gt;
        # Calculăm numărul maxim de elemente ale șirului a căror sumă nu depășește valoarea S pentru fiecare interogare&lt;br /&gt;
        raspunsuri = max_elemente(numere_main, sume_main)&lt;br /&gt;
        # Scriem răspunsurile în fișierul de ieșire&lt;br /&gt;
        for raspuns in raspunsuri:&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>