<?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=0353_-_Spectacole</id>
	<title>0353 - Spectacole - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=0353_-_Spectacole"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0353_-_Spectacole&amp;action=history"/>
	<updated>2026-05-01T12:08:56Z</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=0353_-_Spectacole&amp;diff=8692&amp;oldid=prev</id>
		<title>AntalKrisztian: Pagină nouă: == Cerinţa == La un festival sunt programate &#039;&#039;&#039;n&#039;&#039;&#039; spectacole. Pentru fiecare se cunoaște momentul de început și momentul de sfârșit, exprimate prin numere naturale. Un spectator dorește să urmărească cât mai multe spectacole în întregime.  Determinați numărul maxim de spectacole care pot fi urmărite, fără ca acestea să se suprapună. == Date de intrare == Fişierul de intrare &#039;&#039;&#039;spectacolein.txt&#039;&#039;&#039; conţine pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;. Pe fiecare din...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0353_-_Spectacole&amp;diff=8692&amp;oldid=prev"/>
		<updated>2023-12-29T18:01:46Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == La un festival sunt programate &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; spectacole. Pentru fiecare se cunoaște momentul de început și momentul de sfârșit, exprimate prin numere naturale. Un spectator dorește să urmărească cât mai multe spectacole în întregime.  Determinați numărul maxim de spectacole care pot fi urmărite, fără ca acestea să se suprapună. == Date de intrare == Fişierul de intrare &amp;#039;&amp;#039;&amp;#039;spectacolein.txt&amp;#039;&amp;#039;&amp;#039; conţine pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. Pe fiecare din...&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;
La un festival sunt programate &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; spectacole. Pentru fiecare se cunoaște momentul de început și momentul de sfârșit, exprimate prin numere naturale. Un spectator dorește să urmărească cât mai multe spectacole în întregime.&lt;br /&gt;
&lt;br /&gt;
Determinați numărul maxim de spectacole care pot fi urmărite, fără ca acestea să se suprapună.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &amp;#039;&amp;#039;&amp;#039;spectacolein.txt&amp;#039;&amp;#039;&amp;#039; conţine pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. Pe fiecare dintre următoarele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii se află câte două numere naturale &amp;#039;&amp;#039;&amp;#039;X Y&amp;#039;&amp;#039;&amp;#039;, reprezentând momentul de început și momentul de sfârșit al unui spectacol.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Fişierul de ieşire &amp;#039;&amp;#039;&amp;#039;spectacoleout.txt&amp;#039;&amp;#039;&amp;#039; va conţine pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;S&amp;#039;&amp;#039;&amp;#039;, reprezentând numărul maxim de spectacole care pot fi urmărite, fără să se suprapună.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 &amp;amp;les; n &amp;amp;les; 100&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* momentele de început și sfârșit ale spectacolelor sunt numere naturale mai mici decât &amp;#039;&amp;#039;&amp;#039;1.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* pentru fiecare spectacol, &amp;#039;&amp;#039;&amp;#039;X &amp;lt; Y&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* dacă momentul de început al unui spectacol și momentul de sfârșit al altui spectacol coincid, pot fi urmărite ambele spectacole&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; spectacolein.txt&lt;br /&gt;
 10&lt;br /&gt;
 5 14&lt;br /&gt;
 14 17&lt;br /&gt;
 8 13&lt;br /&gt;
 13 15&lt;br /&gt;
 15 17&lt;br /&gt;
 3 6&lt;br /&gt;
 4 7&lt;br /&gt;
 6 9&lt;br /&gt;
 11 14&lt;br /&gt;
 10 11&lt;br /&gt;
; spectacoleout.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse.&lt;br /&gt;
 5&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Pot fi alese, de exemplu, spectacolele: &amp;#039;&amp;#039;&amp;#039;3 6&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;6 9&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;10 11&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;11 14&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;14 17&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; spectacolein.txt&lt;br /&gt;
 igrij&lt;br /&gt;
; spectacoleout.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, spectacole_validare):&lt;br /&gt;
    # Verificăm dacă n este în intervalul 1-100&lt;br /&gt;
    if n_validare &amp;lt; 1 or n_validare &amp;gt; 100:&lt;br /&gt;
        raise ValueError  # Ridicăm o eroare dacă n nu este în intervalul 1-100&lt;br /&gt;
    for spectacol in spectacole_validare:    # Parcurgem lista de spectacole&lt;br /&gt;
        # Verificăm dacă momentele de început și sfârșit ale spectacolelor sunt în intervalul specificat&lt;br /&gt;
        if spectacol[0] &amp;gt;= 1000000 or spectacol[1] &amp;gt;= 1000000 or spectacol[0] &amp;gt;= spectacol[1]:&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 numar_spectacole determină numărul maxim de spectacole care pot fi urmărite, fără ca acestea să se suprapună&lt;br /&gt;
def numar_spectacole(n_numar, spectacole_numar):&lt;br /&gt;
    # Sortăm spectacolele în funcție de momentul de sfârșit&lt;br /&gt;
    spectacole_numar.sort(key=lambda x: x[1])&lt;br /&gt;
    # Inițializăm numărul de spectacole cu 1&lt;br /&gt;
    nr_spectacole = 1&lt;br /&gt;
    # Inițializăm momentul de sfârșit al ultimului spectacol urmărit&lt;br /&gt;
    sfarsit_ultim = spectacole_numar[0][1]&lt;br /&gt;
    # Parcurgem lista de spectacole&lt;br /&gt;
    for i in range(1, n_numar):&lt;br /&gt;
        if spectacole_numar[i][0] &amp;gt;= sfarsit_ultim:&lt;br /&gt;
            # Urmărim spectacolul curent&lt;br /&gt;
            nr_spectacole += 1&lt;br /&gt;
            sfarsit_ultim = spectacole_numar[i][1]&lt;br /&gt;
    return nr_spectacole&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    file_in = open(&amp;quot;spectacolein.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    file_out = open(&amp;quot;spectacoleout.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        # Citim numărul de spectacole&lt;br /&gt;
        n_main = int(file_in.readline())&lt;br /&gt;
        # Citim momentele de început și sfârșit ale spectacolelor&lt;br /&gt;
        spectacole_main = [list(map(int, file_in.readline().split())) for _ in range(n_main)]&lt;br /&gt;
        # Validăm datele de intrare&lt;br /&gt;
        validare(n_main, spectacole_main)&lt;br /&gt;
        # Determinăm numărul maxim de spectacole care pot fi urmărite&lt;br /&gt;
        nr_spectacole_main = numar_spectacole(n_main, spectacole_main)&lt;br /&gt;
        # Scriem numărul maxim de spectacole care pot fi urmărite în fișierul de ieșire&lt;br /&gt;
        file_out.write(str(nr_spectacole_main) + &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;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>AntalKrisztian</name></author>
	</entry>
</feed>