<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vasiliu+Costel+Andrei</id>
	<title>Bitnami MediaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vasiliu+Costel+Andrei"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/wiki/Special:Contributions/Vasiliu_Costel_Andrei"/>
	<updated>2026-05-01T07:33:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=E:15346&amp;diff=10567</id>
		<title>E:15346</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=E:15346&amp;diff=10567"/>
		<updated>2025-01-13T10:39:47Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[E:15346]] (Mihai Vijdeluc și Vasile Ienuțaș, Baia Mare)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Calculați &amp;lt;math&amp;gt;1^3 + 1^3 + 5^3 + 6^3 - 7^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
b) Arătați că &amp;lt;math&amp;gt;5^{2018}+6^{2018}&amp;lt;7^{2018}&amp;lt;/math&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soluție.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a) &amp;lt;math&amp;gt;1^3 + 1^3 + 5^3 + 6^3 - 7^3 = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
b) Din punctul a) putem scrie &amp;lt;math&amp;gt;1^3 + 1^3 + 5^3 + 6^3 = 7^3&amp;lt;/math&amp;gt; sau &amp;lt;math&amp;gt;\left(\frac{1}{7}\right)^3 + \left(\frac{1}{7}\right)^3 + \left(\frac{5}{7}\right)^3+\left(\frac{6}{7}\right)^3 = 1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Acum &amp;lt;math&amp;gt;\left(\frac{1}{7}\right)^{2018}&amp;lt;\left(\frac{1}{7}\right)^3&lt;br /&gt;
, \left(\frac{5}{7}\right)^{2018}&amp;lt;\left(\frac{5}{7}\right)^3, \left(\frac{6}{7}\right)^{2018}&amp;lt;\left(\frac{6}{7}\right)^3&amp;lt;/math&amp;gt;, de unde &amp;lt;math&amp;gt;\left(\frac{1}{7}\right)^{2018}+\left(\frac{1}{7}\right)^{2018}+\left(\frac{5}{7}\right)^{2018}+\left(\frac{6}{7}\right)^{2018} &amp;lt; \left(\frac{1}{7}\right)^3 + \left(\frac{1}{7}\right)^3 + \left(\frac{5}{7}\right)^3 + \left(\frac{6}{7}\right)^3.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obținem astfel &amp;lt;math&amp;gt;\left(\frac{1}{7}\right)^{2018}+\left(\frac{1}{7}\right)^{2018}+\left(\frac{5}{7}\right)^{2018}+\left(\frac{6}{7}\right)^{2018}&amp;lt;1&amp;lt;/math&amp;gt; sau &amp;lt;math&amp;gt;1^{2018}+1^{2018}+5^{2018}+6^{2018}&amp;lt;7^{2018}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Deoarece &amp;lt;math&amp;gt;5^{2018}+6^{2018} &amp;lt; 1^{2018}+1^{2018}+5^{2018}+6^{2018} &amp;lt; 7^{2018} &amp;lt;/math&amp;gt;, inegalitatea este demonstrată.&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=E:15346&amp;diff=10566</id>
		<title>E:15346</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=E:15346&amp;diff=10566"/>
		<updated>2025-01-13T10:38:09Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Soluție.&amp;#039;&amp;#039;&amp;#039;  a) &amp;lt;math&amp;gt;1^3 + 1^3 + 5^3 + 6^3 - 7^3 = 0&amp;lt;/math&amp;gt;.  b) Din punctul a) putem scrie &amp;lt;math&amp;gt;1^3 + 1^3 + 5^3 + 6^3 = 7^3&amp;lt;/math&amp;gt; sau &amp;lt;math&amp;gt;\left(\frac{1}{7}\right)^3 + \left(\frac{1}{7}\right)^3 + \left(\frac{5}{7}\right)^3+\left(\frac{6}{7}\right)^3 = 1&amp;lt;/math&amp;gt;.  Acum &amp;lt;math&amp;gt;\left(\frac{1}{7}\right)^{2018}&amp;lt;\left(\frac{1}{7}\right)^3 , \left(\frac{5}{7}\right)^{2018}&amp;lt;\left(\frac{5}{7}\right)^3, \left(\frac{6}{7}\right)^{2018}&amp;lt;\left(\frac{6}{7}\right)^3&amp;lt;/math&amp;gt;, de...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Soluție.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a) &amp;lt;math&amp;gt;1^3 + 1^3 + 5^3 + 6^3 - 7^3 = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
b) Din punctul a) putem scrie &amp;lt;math&amp;gt;1^3 + 1^3 + 5^3 + 6^3 = 7^3&amp;lt;/math&amp;gt; sau &amp;lt;math&amp;gt;\left(\frac{1}{7}\right)^3 + \left(\frac{1}{7}\right)^3 + \left(\frac{5}{7}\right)^3+\left(\frac{6}{7}\right)^3 = 1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Acum &amp;lt;math&amp;gt;\left(\frac{1}{7}\right)^{2018}&amp;lt;\left(\frac{1}{7}\right)^3&lt;br /&gt;
, \left(\frac{5}{7}\right)^{2018}&amp;lt;\left(\frac{5}{7}\right)^3, \left(\frac{6}{7}\right)^{2018}&amp;lt;\left(\frac{6}{7}\right)^3&amp;lt;/math&amp;gt;, de unde &amp;lt;math&amp;gt;\left(\frac{1}{7}\right)^{2018}+\left(\frac{1}{7}\right)^{2018}+\left(\frac{5}{7}\right)^{2018}+\left(\frac{6}{7}\right)^{2018} &amp;lt; \left(\frac{1}{7}\right)^3 + \left(\frac{1}{7}\right)^3 + \left(\frac{5}{7}\right)^3 + \left(\frac{6}{7}\right)^3.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obținem astfel &amp;lt;math&amp;gt;\left(\frac{1}{7}\right)^{2018}+\left(\frac{1}{7}\right)^{2018}+\left(\frac{5}{7}\right)^{2018}+\left(\frac{6}{7}\right)^{2018}&amp;lt;1&amp;lt;/math&amp;gt; sau &amp;lt;math&amp;gt;1^{2018}+1^{2018}+5^{2018}+6^{2018}&amp;lt;7^{2018}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Deoarece &amp;lt;math&amp;gt;5^{2018}+6^{2018} &amp;lt; 1^{2018}+1^{2018}+5^{2018}+6^{2018} &amp;lt; 7^{2018} &amp;lt;/math&amp;gt;, inegalitatea este demonstrată.&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=Gazeta_matematic%C4%83_2018&amp;diff=10565</id>
		<title>Gazeta matematică 2018</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=Gazeta_matematic%C4%83_2018&amp;diff=10565"/>
		<updated>2025-01-13T10:20:49Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: /* Gazeta Matematică 4/2018 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Gazeta Matematică 1/2018 ==&lt;br /&gt;
&lt;br /&gt;
=== Supliment ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[S:P18.12]] (Vasile Berinde)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Reconstituiți înmulțirea &amp;lt;math&amp;gt;\overline{abc} \times 3 = \overline{bcc}&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Gazeta Matematică 2/2018 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[S:E15310|E:15310]] (Cristina Vijdeluc și Mihai Vijdeluc)&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Arătați că nu există numere naturale &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; astfel încât să fie adevărată relația &amp;lt;math&amp;gt;p^2 - 2018 = 2^q&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[S:E15313|E:15313]] (Cristina Vijdeluc și Mihai Vijdeluc)&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Determinați cifra &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; pentru care fracția &amp;lt;math&amp;gt;\frac{a^2 \cdot \overline{aa} + a^2(a^2+1)}{\overline{202a}}&amp;lt;/math&amp;gt; este echiunitară.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[S:E15.314|E:15314]] (Cristina Vijdeluc și Mihai Vijdeluc)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Determinați numerele naturale &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; pentru care este adevărată relația &amp;lt;math&amp;gt;2018^{m}=8^{n}+2010&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[S:E15.316|E:15316]] (Cristina Vijdeluc și Mihai Vijdeluc)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Determinați numărul prim &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; și numărul natural &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; astfel încât &amp;lt;math&amp;gt;p^{2} + 5^{p} + 31 = 3181^{q}.&amp;lt;/math&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[15323|E:15323]] (Cristina Vijdeluc și Mihai Vijdeluc)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Arătați că există o infinitate de numere naturale diferite &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; pentru care &amp;lt;math&amp;gt;4a^2 - 2022ab + 2018b^2 = 0&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[15324|E:15324]] (Cristina Vijdeluc și Mihai Vijdeluc)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Determinați cifrele nenule &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; pentru care &amp;lt;math&amp;gt;\frac{y^3}{x^3} - \frac{\overline{xy}}{x} = 2\left(\frac{\overline{xy}}{x} - 16\right)&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[S:E15.325|E:15325]] (Cristina Vijdeluc și Mihai Vijdeluc, Baia Mare)&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;Determinați numerele naturale &amp;lt;math&amp;gt;\overline{abcd}&amp;lt;/math&amp;gt; pentru care:&#039;&#039;&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;\frac{\sqrt{d+2 \cdot \overline{abc}}}{\overline{d0}} = \frac{\sqrt{3 \cdot \overline{abc}}}{\overline{abc}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[S:E15310|E:15310]] (Cristina Vijdeluc și Mihai Vijdeluc, Baia Mare)&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Arătați că nu există numere naturale &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; astfel încât să fie adevărată relația &amp;lt;math&amp;gt;p^2 - 2018 = 2^q&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[S:E15313|E:15313]] (Cristina Vijdeluc și Mihai Vijdeluc, Baia Mare)&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Determinați cifra &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; pentru care fracția &amp;lt;math&amp;gt;\frac{a^2 \cdot \overline{aa} + a^2(a^2+1)}{\overline{202a}}&amp;lt;/math&amp;gt; este echiunitară.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Gazeta Matematică 3/2018 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[15326|E:15326]] (Andreea Bogdanovici)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Determinați numerele naturale &amp;lt;math&amp;gt;a,b,c&amp;lt;/math&amp;gt; pentru care este adevărată relația &amp;lt;math&amp;gt;\frac{37}{10}=a+\frac{1}{b+\frac{1}{c+\frac{1}{3}}}&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Gazeta Matematică 4/2018 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[E:15344]] (Teodora Zetea și Bogdan Zetea)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Un număr se numește primial dacă este format din cifre prime, distincte.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a) &#039;&#039;Câte numere primiale de trei cifre există?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
b) &#039;&#039;Arătați că suma tuturor numerelor primiale nu este un pătrat perfect.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[E:15345]] (Călin Dănuț Hossu)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Determinați numerele &#039;&#039;&amp;lt;math&amp;gt;\overline{xyz}&amp;lt;/math&amp;gt; &#039;&#039;, scrise în baza &amp;lt;math&amp;gt;10&amp;lt;/math&amp;gt;, știind că &amp;lt;math&amp;gt;x^{y+z} + x^y + x^z - 584 = 0&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[E:15346]] (Mihai Vijdeluc și Vasile Ienuțaș, Baia Mare)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;a) Calculați &amp;lt;math&amp;gt;1^3 + 1^3 + 5^3 + 6^3 - 7^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
b) Arătați că &amp;lt;math&amp;gt;5^{2018}+6^{2018}&amp;lt;7^{2018}&amp;lt;/math&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[15347|E:15347]] (Meda Bojor)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Determinați numerele prime &amp;lt;math&amp;gt;p, q, r, s&amp;lt;/math&amp;gt; pentru care este adevărată relația &amp;lt;math&amp;gt;p \cdot q \cdot r \cdot s = 26(p + q + r + s)&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[15348|E:15348]] (Gheorghe Boroica)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Determinați valorile naturale ale numărului &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; pentru care există &amp;lt;math&amp;gt;x, y \in \mathbb{N}^*&amp;lt;/math&amp;gt; astfel încât &amp;lt;math&amp;gt;x^3 + 2y^3 = a \cdot (2x^2y + xy^2)&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Supliment ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;S:E18.127 (Nicolae Mușuroia)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Un copil se joacă. În prima etapă, scrie un număr pe tablă. La fiecare dintre etapele următoare, înlocuiește numărul de pe tablă cu un altul, obținut după una dintre următoarele reguli: sau scrie dublul numărului, sau scrie numărul obținut prin înlocuirea ultimei cifre a numărului cu  ultima cifră a cubului acestuia. Știind că se pornește de la numărul &amp;lt;math&amp;gt;18&amp;lt;/math&amp;gt;, stabiliți dacă&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
a) s&#039;&#039;e poate ajunge la numărul&#039;&#039; &amp;lt;math&amp;gt;78&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
b) &#039;&#039;se poate ajunge la numărul&#039;&#039; &amp;lt;math&amp;gt;2018&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[S:E18.128]] (Vasile Ienuțaș)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Scrieți numărul &amp;lt;math&amp;gt;2018^{2017}&amp;lt;/math&amp;gt; ca sumă de patru pătrate perfecte nenule distincte.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;S:E18.129 (Ioan-Iulian Bunu)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Determinați numerele prime &amp;lt;math&amp;gt;a, b, c&amp;lt;/math&amp;gt; din egalitatea &amp;lt;math&amp;gt;5a^6+13b^2+5^c=2018&amp;lt;/math&amp;gt;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;S:E18.130 (Traian Covaciu)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a) &#039;&#039;Determinați numerele prime &amp;lt;math&amp;gt;x,y,z&amp;lt;/math&amp;gt; astfel încât&#039;&#039; &amp;lt;math&amp;gt;8x+9y+60z=1918&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
b) &#039;&#039;Aflați numerele naturale &amp;lt;math&amp;gt;x,y,z&amp;lt;/math&amp;gt; astfel încât&#039;&#039; &amp;lt;math&amp;gt;20x+208y+209z=2018&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[S:E18.131]] (Nicolae Mușuroia)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Determinați cel mai mic număr natural pătrat perfect care se poate scrie ca sumă de 2018 numere naturale consecutive.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[S:E18.154]] (Nicolae Mușuroia)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Fie &amp;lt;math&amp;gt;a,b,c \in \mathbb{Z}&amp;lt;/math&amp;gt; cu &amp;lt;math&amp;gt;b^{2}+c^{2}=a^{2}&amp;lt;/math&amp;gt;. Arătați că pentru orice &amp;lt;math&amp;gt;n\in \mathbb{N}^{*}&amp;lt;/math&amp;gt;, ecuația &amp;lt;math&amp;gt;x^{2}+2a^{n}x+b^{2n}+c^{2n}=0&amp;lt;/math&amp;gt; are soluții reale.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1912_-_Becuri&amp;diff=8742</id>
		<title>1912 - Becuri</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1912_-_Becuri&amp;diff=8742"/>
		<updated>2024-01-01T13:16:09Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Cerința == Chris vă propune un joc cu becuri. &amp;lt;br&amp;gt;  * în joc sunt n becuri&amp;lt;br&amp;gt; * inițial toate cele n becuri au culoarea albastru &amp;lt;br&amp;gt; * fiecare bec poate avea doar două culori: roșu sau albastru&amp;lt;br&amp;gt; * se efectuează n parcurgeri, pentru k de la 1 la n. La parcurgerea de rang k, se schimbă culoarea fiecărui bec situat pe poziţii având indicii multipli de k, din roşu în albastru şi invers.&amp;lt;br&amp;gt; Știind numărul n de becuri, să se afișeze numărul de becuri car...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Chris vă propune un joc cu becuri. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* în joc sunt n becuri&amp;lt;br&amp;gt;&lt;br /&gt;
* inițial toate cele n becuri au culoarea albastru &amp;lt;br&amp;gt;&lt;br /&gt;
* fiecare bec poate avea doar două culori: roșu sau albastru&amp;lt;br&amp;gt;&lt;br /&gt;
* se efectuează n parcurgeri, pentru k de la 1 la n. La parcurgerea de rang k, se schimbă culoarea fiecărui bec situat pe poziţii având indicii multipli de k, din roşu în albastru şi invers.&amp;lt;br&amp;gt;&lt;br /&gt;
Știind numărul n de becuri, să se afișeze numărul de becuri care au culoarea roșie după terminarea jocului.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare becuriin.txt conține pe prima linie numărul de becuri n.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire becuriout.txt va conține pe prima linie numărul de becuri care au culoarea roșie după terminarea jocului.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numerotarea pozițiilor becurilor începe cu 1&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 10^9&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; becuriin.txt&lt;br /&gt;
: 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; becuriout.txt&lt;br /&gt;
: 2&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; becuriin.txt&lt;br /&gt;
: 10&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; becuriout.txt&lt;br /&gt;
: 3&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; becuriin.txt&lt;br /&gt;
: 18&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; becuriout.txt&lt;br /&gt;
: 4&lt;br /&gt;
&lt;br /&gt;
== Exemplul 4 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; becuriin.txt&lt;br /&gt;
: 0&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1912 - Becuri&lt;br /&gt;
&lt;br /&gt;
def validare_date(n):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 10**9):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_becuri_rosii(n):&lt;br /&gt;
    becuri = [0] * (n + 1)&lt;br /&gt;
&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        for i in range(k, n + 1, k):&lt;br /&gt;
            becuri[i] = 1 - becuri[i]&lt;br /&gt;
&lt;br /&gt;
    return sum(becuri)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;becuriin.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
    n = int(f.readline().strip())&lt;br /&gt;
&lt;br /&gt;
if validare_date(n):&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    rezultat = numar_becuri_rosii(n)&lt;br /&gt;
    with open(&amp;quot;becuriout.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        f.write(str(rezultat) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    exit(0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1940_-_Bomba&amp;diff=8741</id>
		<title>1940 - Bomba</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1940_-_Bomba&amp;diff=8741"/>
		<updated>2024-01-01T13:01:16Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Cerința == Războiul intergalactic a început, iar extratereștrii au invadat deja planeta noastră. Misiunea ta este să salvezi toți locuitorii planetei cât mai repede cu putință!  Într-un hambar vechi, ai găsit un robot proiectat special pentru amplasarea de bombe nucleare și totodată o hartă a planetei sub formă de dreptunghi împărțită în N x M zone pătratice dispuse pe N linii și M coloane, de dimensiune 1. Pe hartă sunt reprezentate și pozițiile...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Războiul intergalactic a început, iar extratereștrii au invadat deja planeta noastră. Misiunea ta este să salvezi toți locuitorii planetei cât mai repede cu putință!&lt;br /&gt;
&lt;br /&gt;
Într-un hambar vechi, ai găsit un robot proiectat special pentru amplasarea de bombe nucleare și totodată o hartă a planetei sub formă de dreptunghi împărțită în N x M zone pătratice dispuse pe N linii și M coloane, de dimensiune 1. Pe hartă sunt reprezentate și pozițiile extratereștrilor (xi,yi), unde xi reprezintă indicele de linie, iar yi reprezintă indicele de coloană al extraterestrului i. De asemenea, robotul poate amplasa bombe în orice poziție de pe hartă, iar la declanșarea lor, acestea distrug orice extraterestru de pe aceeași linie sau de pe aceeași coloană cu ele.&lt;br /&gt;
&lt;br /&gt;
Din păcate, robotul nu este echipat decât cu o singură bombă. Datoria ta este să-i transmiți robotului coordonatele x y unde să amplaseze bomba, astfel încât toți extratereștrii să fie distruși. Poți să salvezi planeta? Timpul se scurge! Tic, tac, tic, tac…&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare bombain.txt conține pe prima linie două numere naturale N și M, reprezentând numărul de linii, respectiv numărul de coloane ale hărții. Pe următoarele N linii se găsesc câte M caractere din mulțimea {0,1}; 0 reprezintă o poziție liberă, în timp ce 1 reprezintă o poziție ocupată de un extraterestru.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire bombaout.txt va conține pe prima linie două numere naturale x și y, reprezentând indicele liniei și al coloanei unde trebuie amplasată bomba astfel încât toți extratereștrii să fie distruși.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n, m&#039;&#039;&#039; &amp;amp;les; 1.000&lt;br /&gt;
* Numărul de extratereștri nu depășește 2000.&lt;br /&gt;
* Dacă există mai multe celule în care poate fi amplasată bomba, se alege cea cu indicele de linie x minim. Dacă există mai multe celule în care poate fi amplasată bomba cu indicele de linie x minim, se alege cea cu indicele de coloană y minim.&lt;br /&gt;
* Liniile și coloanele hărții sunt numerotate începând cu 1.&lt;br /&gt;
* Se garantează că pentru datele de test există întotdeauna soluție.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; bombain.txt&lt;br /&gt;
: 4 4&lt;br /&gt;
: 0010&lt;br /&gt;
: 0000&lt;br /&gt;
: 0001&lt;br /&gt;
: 0001&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; bombaout.txt&lt;br /&gt;
: 1 4&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Bomba trebuie să fie amplasată pe poziția (1,4) astfel încât toți extratereștrii să fie distruși.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; bombain.txt&lt;br /&gt;
: 3 3&lt;br /&gt;
: 010&lt;br /&gt;
: 001&lt;br /&gt;
: 000&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; bombaout.txt&lt;br /&gt;
: 1 3&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Bomba poate să fie amplasată atât pe poziția (2,2), cât și pe poziția (1,3), astfel se afișează cea de-a doua poziție deoarece are indicele de linie X minim.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; bombain.txt&lt;br /&gt;
: 3001 3&lt;br /&gt;
: 010&lt;br /&gt;
: 001&lt;br /&gt;
: 000&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1940 - Bomba&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, m, harta):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000 and 1 &amp;lt;= m &amp;lt;= 1000):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if len(harta) != n:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for linie in harta:&lt;br /&gt;
        if len(linie) != m:&lt;br /&gt;
            return False&lt;br /&gt;
        if not all(caracter in {&#039;0&#039;, &#039;1&#039;} for caracter in linie):&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def gaseste_pozitie_bomba(n, m, harta):&lt;br /&gt;
    for coloana in range(m):&lt;br /&gt;
        for linie in range(n):&lt;br /&gt;
            if harta[linie][coloana] == &#039;1&#039;:&lt;br /&gt;
                return linie + 1, coloana + 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;bombain.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
    n, m = map(int, fin.readline().split())&lt;br /&gt;
    harta = [fin.readline().strip() for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n, m, harta):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        x, y = gaseste_pozitie_bomba(n, m, harta)&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;bombaout.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(f&amp;quot;{x} {y}\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
        &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0689_-_Risipa&amp;diff=8740</id>
		<title>0689 - Risipa</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0689_-_Risipa&amp;diff=8740"/>
		<updated>2024-01-01T12:38:22Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț ==  Fiul risipitor primeşte de ziua lui o sumă de S lei. Începând din acea zi (considerată ca ziua 1) în fiecare zi se întâmplă unul dintre următoarele evenimente: &amp;lt;br&amp;gt;  * Dacă S dă restul 0 la împărtirea cu 3 atunci el cheltuie două treimi din sumă.&amp;lt;br&amp;gt; * Dacă S dă restul 1 la împărtirea cu 3 atunci el primeşte 3A+2 lei de la tata.&amp;lt;br&amp;gt; * Dacă S dă restul 2 la împărtirea cu 3 atunci el primeşte 3B+1 lei de la mama.&amp;lt;br&amp;gt;  == Cerința == Cunos...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
&lt;br /&gt;
Fiul risipitor primeşte de ziua lui o sumă de S lei. Începând din acea zi (considerată ca ziua 1) în fiecare zi se întâmplă unul dintre următoarele evenimente: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Dacă S dă restul 0 la împărtirea cu 3 atunci el cheltuie două treimi din sumă.&amp;lt;br&amp;gt;&lt;br /&gt;
* Dacă S dă restul 1 la împărtirea cu 3 atunci el primeşte 3A+2 lei de la tata.&amp;lt;br&amp;gt;&lt;br /&gt;
* Dacă S dă restul 2 la împărtirea cu 3 atunci el primeşte 3B+1 lei de la mama.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Cunoscându-se S – suma iniţiala, A, B – numere cu semnificaţia din enunţ să se determine primele două zile în ordine cronologică în care fiul risipitor va avea aceeaşi sumă precum şi suma respectivă.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare risipain.txt conţine pe prima linie numărul natural S reprezentând suma de care dispune fiul risipitor în prima zi iar pe a doua linie cele două valori naturale A şi B separate printr-un spaţiu.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieşire risipaout.txt va conţine pe prima linie o valoare naturală reprezentând prima sumă care se repetă iar pe a doua linie cele două valori naturale, separate printr-un spaţiu reprezentând prima respectiv a doua zi în care s-a obţinut respectiva sumă.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 10^100&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;a, b&#039;&#039;&#039; &amp;amp;les; 1.000&lt;br /&gt;
* Suma unei zile este considerată cea de la începutul zilei înainte ca fiul risipitor să cheltuie bani sau dupa caz să primească bani de la mama sau de la tata.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; risipain.txt&lt;br /&gt;
: 7&lt;br /&gt;
: 1 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; risipaout.txt&lt;br /&gt;
: 6&lt;br /&gt;
: 7 9&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Daca suma dă restul 1 primeşte 5 lei. &amp;lt;br&amp;gt;&lt;br /&gt;
Daca suma dă restul 2 primeşte 4 lei.&amp;lt;br&amp;gt;&lt;br /&gt;
Ziua 1 : suma 7 rest = 1 castigă 5 lei&amp;lt;br&amp;gt;&lt;br /&gt;
Ziua 2 : suma 12 rest = 0 pierde 8 lei&amp;lt;br&amp;gt;&lt;br /&gt;
Ziua 3 : suma 4 rest = 1 castigă 5 lei&amp;lt;br&amp;gt;&lt;br /&gt;
Ziua 4 : suma 9 rest = 0 pierde 6 lei&amp;lt;br&amp;gt;&lt;br /&gt;
Ziua 5 : suma 3 rest = 0 pierde 2 lei&amp;lt;br&amp;gt;&lt;br /&gt;
Ziua 6 : suma 1 rest = 1 castigă 5 lei&amp;lt;br&amp;gt;&lt;br /&gt;
Ziua 7 : suma 6 rest = 0 pierde 4 lei&amp;lt;br&amp;gt;&lt;br /&gt;
Ziua 8 : suma 2 rest = 2 castigă 4 lei&amp;lt;br&amp;gt;&lt;br /&gt;
Ziua 9 : suma 6 la fel ca in ziua 7&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; risipain.txt&lt;br /&gt;
: 7&lt;br /&gt;
: 1001 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#0689 - Risipa&lt;br /&gt;
&lt;br /&gt;
def valideaza_input(s, a, b):&lt;br /&gt;
    if not (1 &amp;lt;= s &amp;lt;= 10100 and 1 &amp;lt;= a &amp;lt;= 1000 and 1 &amp;lt;= b &amp;lt;= 1000):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def risipitor(s, a, b):&lt;br /&gt;
    sume_vazute = {}&lt;br /&gt;
    suma_curenta = s&lt;br /&gt;
    zi = 1&lt;br /&gt;
&lt;br /&gt;
    while True:&lt;br /&gt;
        if suma_curenta in sume_vazute:&lt;br /&gt;
            return suma_curenta, (sume_vazute[suma_curenta], zi)&lt;br /&gt;
&lt;br /&gt;
        sume_vazute[suma_curenta] = zi&lt;br /&gt;
&lt;br /&gt;
        if suma_curenta % 3 == 0:&lt;br /&gt;
            suma_curenta -= suma_curenta // 3 * 2&lt;br /&gt;
        elif suma_curenta % 3 == 1:&lt;br /&gt;
            suma_curenta += 3 * a + 2&lt;br /&gt;
        elif suma_curenta % 3 == 2:&lt;br /&gt;
            suma_curenta += 3 * b + 1&lt;br /&gt;
&lt;br /&gt;
        zi += 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;risipain.txt&amp;quot;, &amp;quot;r&amp;quot;) as file_in:&lt;br /&gt;
    s = int(file_in.readline().strip())&lt;br /&gt;
    a, b = map(int, file_in.readline().strip().split())&lt;br /&gt;
&lt;br /&gt;
    if valideaza_input(s, a, b):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        rezultat_suma, rezultat_zile = risipitor(s, a, b)&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;risipaout.txt&amp;quot;, &amp;quot;w&amp;quot;) as file_out:&lt;br /&gt;
            file_out.write(str(rezultat_suma) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
            file_out.write(&amp;quot; &amp;quot;.join(map(str, rezultat_zile)) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0742_-_Numar_2&amp;diff=8739</id>
		<title>0742 - Numar 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0742_-_Numar_2&amp;diff=8739"/>
		<updated>2024-01-01T11:58:24Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Cerința == Fie un număr natural a având n cifre. Scrieţi un program care să determine un număr natural x cu proprietatea că este cel mai mic număr mai mare decât a, care are exact aceleaşi cifre ca şi numărul a.  == Date de intrare == Fișierul de intrare numar2in.tx conține două linii:  * pe prima linie un număr natural reprezentând valoarea lui n; &amp;lt;br&amp;gt; * pe a doua linie, fără spaţii între ele, n cifre reprezentând numărul a.  == Date de ieșire == F...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Fie un număr natural a având n cifre. Scrieţi un program care să determine un număr natural x cu proprietatea că este cel mai mic număr mai mare decât a, care are exact aceleaşi cifre ca şi numărul a.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare numar2in.tx conține două linii:&lt;br /&gt;
&lt;br /&gt;
* pe prima linie un număr natural reprezentând valoarea lui n; &amp;lt;br&amp;gt;&lt;br /&gt;
* pe a doua linie, fără spaţii între ele, n cifre reprezentând numărul a.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire numar2out.txt va conține o singură linie pe care se va afla numărul x.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 5.000.000&lt;br /&gt;
* pentru &#039;&#039;&#039;50%&#039;&#039;&#039; din teste, &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 1.000.000&lt;br /&gt;
* pentru toate datele de test există soluţie.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; numar2in.txt&lt;br /&gt;
: 6&lt;br /&gt;
: 204924&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; numar2out.txt&lt;br /&gt;
: 204942&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Există mai multe numere formate din exact aceleaşi cifre ca şi numărul 204924 mai mari decât el. Dintre acestea, 204942 este cel mai mic.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; numar2in.txt&lt;br /&gt;
: 6&lt;br /&gt;
: 2049241&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#0742 - Numar2&lt;br /&gt;
&lt;br /&gt;
def valideaza_input(n, a):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 5000000):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if len(str(a)) != n:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def gaseste_permutare_urmatoare(a):&lt;br /&gt;
    a = list(str(a))&lt;br /&gt;
    n = len(a)&lt;br /&gt;
&lt;br /&gt;
    # Găsim cea mai mică cifră care poate fi schimbată&lt;br /&gt;
    i = n - 2&lt;br /&gt;
    while i &amp;gt;= 0 and a[i] &amp;gt;= a[i + 1]:&lt;br /&gt;
        i -= 1&lt;br /&gt;
&lt;br /&gt;
    # Dacă nu există o astfel de cifră, atunci a este cel mai mare și nu există soluție&lt;br /&gt;
    if i == -1:&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
    # Găsim cea mai mică cifră mai mare decât a[i] în partea dreaptă&lt;br /&gt;
    j = n - 1&lt;br /&gt;
    while a[j] &amp;lt;= a[i]:&lt;br /&gt;
        j -= 1&lt;br /&gt;
&lt;br /&gt;
    # Schimbăm a[i] cu a[j]&lt;br /&gt;
    a[i], a[j] = a[j], a[i]&lt;br /&gt;
&lt;br /&gt;
    # Inversăm cifrele de la i+1 la sfârșit&lt;br /&gt;
    a[i + 1:] = reversed(a[i + 1:])&lt;br /&gt;
&lt;br /&gt;
    return int(&#039;&#039;.join(a))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;numar2in.txt&amp;quot;, &amp;quot;r&amp;quot;) as file:&lt;br /&gt;
        n = int(file.readline().strip())&lt;br /&gt;
        a = int(file.readline().strip())&lt;br /&gt;
&lt;br /&gt;
    if valideaza_input(n, a):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        rezultat = gaseste_permutare_urmatoare(a)&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;numar2out.txt&amp;quot;, &amp;quot;w&amp;quot;) as file_out:&lt;br /&gt;
            file_out.write(str(rezultat))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1687_-_Omogene&amp;diff=8738</id>
		<title>1687 - Omogene</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1687_-_Omogene&amp;diff=8738"/>
		<updated>2024-01-01T10:22:13Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Se consideră o matrice cu L linii și C coloane care memorează doar valori din mulțimea {0,1,2}. O submatrice nevidă (formată din cel puțin o linie și cel puțin o coloană) a acestei matrice o numim omogenă dacă numărul valorilor de 0 este egal cu numărul de valori de 1 și egal cu numărul valorilor de 2. De exemplu, în matricea  0 1 2 0&amp;lt;br&amp;gt; 1 2 0 1&amp;lt;br&amp;gt; sunt șase submatrice omogene, acestea fiind:&amp;lt;br&amp;gt;  0 1 2&amp;lt;br&amp;gt; 1 2 0 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; 1 2 0&amp;lt;br&amp;gt; 2 0 1&amp;lt;br&amp;gt;&amp;lt;b...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Se consideră o matrice cu L linii și C coloane care memorează doar valori din mulțimea {0,1,2}. O submatrice nevidă (formată din cel puțin o linie și cel puțin o coloană) a acestei matrice o numim omogenă dacă numărul valorilor de 0 este egal cu numărul de valori de 1 și egal cu numărul valorilor de 2. De exemplu, în matricea&lt;br /&gt;
&lt;br /&gt;
0 1 2 0&amp;lt;br&amp;gt;&lt;br /&gt;
1 2 0 1&amp;lt;br&amp;gt;&lt;br /&gt;
sunt șase submatrice omogene, acestea fiind:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 1 2&amp;lt;br&amp;gt;&lt;br /&gt;
1 2 0 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1 2 0&amp;lt;br&amp;gt;&lt;br /&gt;
2 0 1&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
0 1 2&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1 2 0&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1 2 0&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2 0 1&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Submatricele a treia și a patra sunt formate din prima linie a matricei inițială, iar submatricele a cincea și a șasea sunt formate din a doua linie.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Să se determine câte submatrice nevide omogene există.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare omogenein.txt conține pe prima linie numerele naturale L și C. Pe următoarele L linii se află câte C numere naturale separate prin spații reprezentând câte o linie din matrice.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire omogeneout.txt va conține pe prima linie un singur număr natural reprezentând numărul submatricelor nevide omogene.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 2 &amp;amp;les; &#039;&#039;&#039;l&#039;&#039;&#039; &amp;amp;les; &#039;&#039;&#039;c&#039;&#039;&#039; &amp;amp;les; 500&lt;br /&gt;
* 4 &amp;amp;les; &#039;&#039;&#039;l*c&#039;&#039;&#039; &amp;amp;les; 65536&lt;br /&gt;
* Atenție, o submatrice este formată dintr-o secvență continuă de linii și coloane, deci, de exemplu, dacă se aleg dintr-o matrice liniile 1, 2 și 5, atunci acestea nu formează o submatrice.&lt;br /&gt;
* Numărul submatricelor omogene va fi mai mic decât 2*10^9&lt;br /&gt;
* Întreaga matrice poate fi submatrice omogenă&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; omogenein.txt&lt;br /&gt;
: 2 4&lt;br /&gt;
: 0 1 2 0&lt;br /&gt;
: 1 2 0 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; omogeneout.txt&lt;br /&gt;
: 6&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Cele șase submatrice au fost menționate în enunț.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; omogenein.txt&lt;br /&gt;
: 3 3&lt;br /&gt;
: 0 1 2&lt;br /&gt;
: 0 2 2&lt;br /&gt;
: 0 1 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; omogeneout.txt&lt;br /&gt;
: 3&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; omogenein.txt&lt;br /&gt;
: 1 3&lt;br /&gt;
: 0 1 2&lt;br /&gt;
: 0 2 2&lt;br /&gt;
: 0 1 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1687 - Omogene&lt;br /&gt;
&lt;br /&gt;
def validare_date(l, c, matrice):&lt;br /&gt;
    if not (2 &amp;lt;= l &amp;lt;= c &amp;lt;= 5000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (4 &amp;lt;= l * c &amp;lt;= 65536):&lt;br /&gt;
        return False&lt;br /&gt;
    if len(matrice) != l or any(len(row) != c for row in matrice):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_submatrici_omogene(l, c, matrice):&lt;br /&gt;
    if not validare_date(l, c, matrice):&lt;br /&gt;
        return 0&lt;br /&gt;
&lt;br /&gt;
    numar_submatrici = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(l):&lt;br /&gt;
        for j in range(c):&lt;br /&gt;
            for x in range(i, l):&lt;br /&gt;
                for y in range(j, c):&lt;br /&gt;
                    submatrice = [matrice[k][j:y + 1] for k in range(i, x + 1)]&lt;br /&gt;
                    numar_0 = sum(row.count(0) for row in submatrice)&lt;br /&gt;
                    numar_1 = sum(row.count(1) for row in submatrice)&lt;br /&gt;
                    numar_2 = sum(row.count(2) for row in submatrice)&lt;br /&gt;
&lt;br /&gt;
                    if numar_0 == numar_1 == numar_2:&lt;br /&gt;
                        numar_submatrici += 1&lt;br /&gt;
&lt;br /&gt;
    return numar_submatrici&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;omogenein.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
    l, c = map(int, f.readline().split())&lt;br /&gt;
    matrice = [list(map(int, f.readline().split())) for _ in range(l)]&lt;br /&gt;
&lt;br /&gt;
    if validare_date(l, c, matrice):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        rezultat = numar_submatrici_omogene(l, c, matrice)&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;omogeneout.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
            f.write(str(rezultat))&lt;br /&gt;
&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1685_-_Dif_2&amp;diff=8737</id>
		<title>1685 - Dif 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1685_-_Dif_2&amp;diff=8737"/>
		<updated>2023-12-31T18:47:46Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Sandu a studiat la ora de informatică mai multe aplicații cu vectori de numere naturale, iar acum are de rezolvat o problemă interesantă. Se dă un șir X=(X[1],X[2],…,X[n]) de numere naturale nenule și două numere naturale p1 și p2, unde p1&amp;lt;p2. Sandu trebuie să construiască un nou șir Y=(Y[1],Y[2],…,Y[n*n]) cu n*n elemente obținute din toate produsele de câte două elemente din șirul X (fiecare element din șirul Y este de forma X[i]*X[j], 1&amp;lt;=i,...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Sandu a studiat la ora de informatică mai multe aplicații cu vectori de numere naturale, iar acum are de rezolvat o problemă interesantă. Se dă un șir X=(X[1],X[2],…,X[n]) de numere naturale nenule și două numere naturale p1 și p2, unde p1&amp;lt;p2. Sandu trebuie să construiască un nou șir Y=(Y[1],Y[2],…,Y[n*n]) cu n*n elemente obținute din toate produsele de câte două elemente din șirul X (fiecare element din șirul Y este de forma X[i]*X[j], 1&amp;lt;=i, j&amp;lt;=n). Sandu are de calculat două valori naturale d1 și d2 obținute din șirul Y. Valoarea d1 este egală cu diferența maximă posibilă dintre două valori ale șirului Y. Pentru a obține valoarea d2, Sandu trebuie să considere că șirul Y are elementele ordonate descrescător iar d2 va fi diferența dintre valorile aflate pe pozițiile p1 și p2 în șirul ordonat descrescător. Sandu a găsit rapid valorile d1 și d2 și, pentru a le verifica, vă roagă să le determinați și voi.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Dându-se șirul X cu n elemente și valorile p1 și p2, determinați valorile d1 și d2.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare dif2in.txt conține pe prima linie un număr natural C care poate fi doar 1 sau 2. Dacă C=1, atunci pe linia a doua se va afla numărul natural n. Dacă C=2, atunci pe linia a doua se vor afla numerele naturale n p1 p2 separate prin câte un spațiu. În ambele cazuri, pe următoarele n linii se vor afla elementele șirului X, câte un număr natural pe fiecare linie a fișierului.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
În cazul C=1, fișierul de ieșire dif2out.txt va conține pe prima linie valoarea d1 egală cu diferența maximă dintre oricare două valori din șirul Y. În cazul C=2 fișierul de ieșire va conține pe prima linie un număr natural d2 reprezentând diferența dintre valorile aflate pe pozițiile p1 și p2 din șirul Y, presupunând că ar fi ordonat descrescător.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 2 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 299.999&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;p1&#039;&#039;&#039; &amp;amp;les; p2-1 &amp;amp;les;n^2&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;x[i]&#039;&#039;&#039; &amp;amp;les; 299.999 &#039;&#039;&#039;i=1...n&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; dif2in.txt&lt;br /&gt;
: 1&lt;br /&gt;
: 4&lt;br /&gt;
: 3&lt;br /&gt;
: 5&lt;br /&gt;
: 2&lt;br /&gt;
: 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; dif2out.txt&lt;br /&gt;
: 32&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Atenție, C=1, deci se rezolvă doar cerința 1!&lt;br /&gt;
Valoarea maximă d1 va fi 32 și se obține efectuând diferența dintre 6*6 și 2*2.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; dif2in.txt&lt;br /&gt;
: 2&lt;br /&gt;
: 4 5 11&lt;br /&gt;
: 3&lt;br /&gt;
: 5&lt;br /&gt;
: 2&lt;br /&gt;
: 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; dif2out.txt&lt;br /&gt;
: 8&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Atenție, C=2, deci se rezolvă doar cerința 2!&lt;br /&gt;
Se obțin în Y următoarele 16 valori: 3*3, 3*5, 3*2, 3*6, 5*3, 5*5, 5*2, 5*6, 2*3, 2*5, 2*2, 2*6, 6*3, 6*5, 6*2, 6*6.&lt;br /&gt;
Valoarea d2 va fi 8, deoarece dacă vom considera șirul Y ordonat descrescător (36, 30, 30, 25, 18, 18, 15, 15, 12, 12, 10, 10,  9, 6, 6, 4), atunci Y[5]-Y[11]=18-10=8&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; dif2in.txt&lt;br /&gt;
: 3&lt;br /&gt;
: 4&lt;br /&gt;
: 3&lt;br /&gt;
: 5&lt;br /&gt;
: 2&lt;br /&gt;
: 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1685 - Dif2&lt;br /&gt;
&lt;br /&gt;
def validare_input(c, n, p1, p2, x):&lt;br /&gt;
    if not (3 &amp;lt; n &amp;lt; 300000):&lt;br /&gt;
        raise ValueError(&amp;quot;Valoarea lui n nu respectă restricțiile.&amp;quot;)&lt;br /&gt;
    if c == 2 and not (1 &amp;lt;= p1 &amp;lt; p2 &amp;lt;= n * n):&lt;br /&gt;
        raise ValueError(&amp;quot;Valorile lui p1 și p2 nu respectă restricțiile.&amp;quot;)&lt;br /&gt;
    if not all(1 &amp;lt;= x &amp;lt; 300000 for x in x):&lt;br /&gt;
        raise ValueError(&amp;quot;Elementele șirului x nu respectă restricțiile.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calcul_d1(x):&lt;br /&gt;
    y = [x * y for x in x for y in x]&lt;br /&gt;
    return max(y) - min(y)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calcul_d2(x, p1, p2):&lt;br /&gt;
    y = sorted([x * y for x in x for y in x], reverse=True)&lt;br /&gt;
    return y[p1 - 1] - y[p2 - 1]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;dif2in.txt&amp;quot;, &amp;quot;r&amp;quot;) as file:&lt;br /&gt;
    c = int(file.readline().strip())&lt;br /&gt;
    if c == 1:&lt;br /&gt;
        n = int(file.readline().strip())&lt;br /&gt;
        p1 = None&lt;br /&gt;
        p2 = None&lt;br /&gt;
    else:&lt;br /&gt;
        n, p1, p2 = map(int, file.readline().strip().split())&lt;br /&gt;
&lt;br /&gt;
    x = [int(file.readline().strip()) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if validare_input(c, n, p1, p2, x):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        if c == 1:&lt;br /&gt;
            d1 = calcul_d1(x)&lt;br /&gt;
            with open(&amp;quot;dif2out.txt&amp;quot;, &amp;quot;w&amp;quot;) as out_file:&lt;br /&gt;
                out_file.write(str(d1))&lt;br /&gt;
        else:&lt;br /&gt;
            d2 = calcul_d2(x, p1, p2)&lt;br /&gt;
            with open(&amp;quot;dif2out.txt&amp;quot;, &amp;quot;w&amp;quot;) as out_file:&lt;br /&gt;
                out_file.write(str(d2))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2463_-_Inequation&amp;diff=8736</id>
		<title>2463 - Inequation</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2463_-_Inequation&amp;diff=8736"/>
		<updated>2023-12-31T18:24:52Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Cerința == Această problemă nu are o descriere plicticoasă, menită să vă încurce.Trebuie doar să aflați cel mai mare număr natural n, astfel încât b^0+b^1+...+b^n≤y, unde b și y sunt valori cunoscute.  == Date de intrare == Fișierul de intrare inequationin.txt va conține pe prima linie numărul t, reprezentând numărul de teste ale problemei.Apoi urmează 3*t rânduri, pentru fiecare test fiind precizată baza b, numărul de cifre ale lui y, precum și c...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Această problemă nu are o descriere plicticoasă, menită să vă încurce.Trebuie doar să aflați cel mai mare număr natural n, astfel încât b^0+b^1+...+b^n≤y, unde b și y sunt valori cunoscute.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare inequationin.txt va conține pe prima linie numărul t, reprezentând numărul de teste ale problemei.Apoi urmează 3*t rânduri, pentru fiecare test fiind precizată baza b, numărul de cifre ale lui y, precum și cifrele numărului y, aflate fiecare pe un rând separat.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire inequationout.txt va conține pe linia i numărul maxim de termeni pentru care se respectă condiția pentru testul cu numărul de ordine t.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;amp;les; 100&lt;br /&gt;
* numărul de cifre ale lui &#039;&#039;&#039;y&#039;&#039;&#039; &amp;amp;les; 25.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; inequationin.txt&lt;br /&gt;
: 1&lt;br /&gt;
: 2&lt;br /&gt;
: 2&lt;br /&gt;
: 16&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; inequationout.txt&lt;br /&gt;
: 4&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
2^0+2^1+2^2+2^3=15≤16, deci în total patru termeni.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; inequationin.txt&lt;br /&gt;
: 1&lt;br /&gt;
: 101&lt;br /&gt;
: 2&lt;br /&gt;
: 16&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#2463 - Inequation&lt;br /&gt;
&lt;br /&gt;
def validare_date(b, y):&lt;br /&gt;
    if not (1 &amp;lt;= b &amp;lt;= 100):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= len(y) &amp;lt;= 25000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not all(0 &amp;lt;= int(cifra) &amp;lt;= 9 for cifra in y):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculeaza_numar_maxim_termeni(b, y):&lt;br /&gt;
    suma = 0&lt;br /&gt;
    numar_termeni = 0&lt;br /&gt;
    i = 0&lt;br /&gt;
    while suma + b ** i &amp;lt;= int(y):&lt;br /&gt;
        suma += b ** i&lt;br /&gt;
        numar_termeni += 1&lt;br /&gt;
        i += 1&lt;br /&gt;
    return numar_termeni&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;inequationin.txt&amp;quot;, &amp;quot;r&amp;quot;) as file_input:&lt;br /&gt;
        t = int(file_input.readline().strip())&lt;br /&gt;
        for _ in range(t):&lt;br /&gt;
            b = int(file_input.readline().strip())&lt;br /&gt;
            lungime_y = int(file_input.readline().strip())&lt;br /&gt;
            y = file_input.readline().strip()&lt;br /&gt;
&lt;br /&gt;
            if validare_date(b, y):&lt;br /&gt;
                print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
                rezultat = calculeaza_numar_maxim_termeni(b, y)&lt;br /&gt;
&lt;br /&gt;
                with open(&amp;quot;inequationout.txt&amp;quot;, &amp;quot;w&amp;quot;) as file_output:&lt;br /&gt;
                    file_output.write(str(rezultat) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2341_-_Labirint_4&amp;diff=8735</id>
		<title>2341 - Labirint 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2341_-_Labirint_4&amp;diff=8735"/>
		<updated>2023-12-31T18:00:03Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Cerința == Cătălin s-a pierdut iarăși într-o matrice de N linii și M coloane în care unele celule sunt blocate. Cătălin nu găsește ieșirea așa că s-a decis să caute o comoară. El are o harta pe care a desenat-o când era mic și decide să o urmeze. Pe harta este scris un șir format din caracterele U, R, D, L. În fiecare secundă Cătălin se va deplasa în una dintre cele 4 celule adiacente. Presupunând că la secunda S Cătălin se află în celula i,...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Cătălin s-a pierdut iarăși într-o matrice de N linii și M coloane în care unele celule sunt blocate. Cătălin nu găsește ieșirea așa că s-a decis să caute o comoară. El are o harta pe care a desenat-o când era mic și decide să o urmeze. Pe harta este scris un șir format din caracterele U, R, D, L. În fiecare secundă Cătălin se va deplasa în una dintre cele 4 celule adiacente. Presupunând că la secunda S Cătălin se află în celula i, j el se va mișcă în funcție de al S-lea caracter de pe harta în felul următor: pentru U el va păși în celula i - 1, j; pentru R el va păși în celula i, j + 1; pentru D el va păși în celula i + 1, j, iar pentru L, el va păși în celula i, j - 1.&lt;br /&gt;
&lt;br /&gt;
Dacă celula în care trebuie să pășească este în afara matricei sau este blocată, atunci Cătălin va sta pe loc în acea secunda. În ce celulă ajunge Cătălin?&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Pe prima linie a fișierului de intrare labirint4in.txt se vor afla trei numere naturale N, M și K. Pe următoarele K linii se vor afla cate 2 numere reprezentând linia și coloana unei celule blocate. Pe următoarea linie se vor afla 2 numere naturale reprezentând linia, respectiv coloana de pe care începe Cătălin să se miște. Pe ultima linie se va afla numărul de caractere din șirul de pe hartă urmat de acele caractere.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
În fișierul de ieșire​ labirint4out.txt​ se vor afla două numere reprezentând linia și coloana pe care ajunge Cătălin.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;lungimea șirului de pe hartă&#039;&#039;&#039; &amp;amp;les; 10.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n, m&#039;&#039;&#039; &amp;amp;les; 10.000 și k = 0&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n, m&#039;&#039;&#039; &amp;amp;les; 500 și 1 &amp;amp;les; &#039;&#039;&#039;k&#039;&#039;&#039; &amp;amp;les; n*m&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n, m&#039;&#039;&#039; &amp;amp;les; 10.000 și 1 &amp;amp;les; &#039;&#039;&#039;k&#039;&#039;&#039; &amp;amp;les; 1.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; labirint4in.txt&lt;br /&gt;
: 4 5 7&lt;br /&gt;
: 1 3&lt;br /&gt;
: 1 5 &lt;br /&gt;
: 2 1 &lt;br /&gt;
: 2 4 &lt;br /&gt;
: 2 5 &lt;br /&gt;
: 3 1&lt;br /&gt;
: 3 2&lt;br /&gt;
: 2 2&lt;br /&gt;
: 11&lt;br /&gt;
: ULRDDRDRDLU &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; labirint4out.txt&lt;br /&gt;
: 3 3&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Traseul lui Catalin este:&lt;br /&gt;
(2, 2) → (1, 2) → (1, 1) → (1, 2) → (2, 2) → (2, 3) → (3, 3) → (3, 4) → (4, 4) → (4, 3) → (3, 3)&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; labirint4in.txt&lt;br /&gt;
: 10001 5 7&lt;br /&gt;
: 1 3&lt;br /&gt;
: 1 5 &lt;br /&gt;
: 2 1 &lt;br /&gt;
: 2 4 &lt;br /&gt;
: 2 5 &lt;br /&gt;
: 3 1&lt;br /&gt;
: 3 2&lt;br /&gt;
: 2 2&lt;br /&gt;
: 11&lt;br /&gt;
: ULRDDRDRDLU &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#2341 - Labirint4&lt;br /&gt;
&lt;br /&gt;
def este_valid(n, m, k, celule_blocate, start, lungime_harta):&lt;br /&gt;
    if not (1 &amp;lt;= lungime_harta &amp;lt;= 10000):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 10000) or not (1 &amp;lt;= m &amp;lt;= 10000):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if not (0 &amp;lt;= k &amp;lt;= n * m):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for i, j in celule_blocate:&lt;br /&gt;
        if not (1 &amp;lt;= i &amp;lt;= n) or not (1 &amp;lt;= j &amp;lt;= m):&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    if not (1 &amp;lt;= start[0] &amp;lt;= n) or not (1 &amp;lt;= start[1] &amp;lt;= m):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def este_in_matrice(i, j, n, m):&lt;br /&gt;
    return 1 &amp;lt;= i &amp;lt;= n and 1 &amp;lt;= j &amp;lt;= m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezolva_labirint(n, m, celule_blocate, start, lungime_harta, harta):&lt;br /&gt;
    directii = {&#039;U&#039;: (-1, 0), &#039;R&#039;: (0, 1), &#039;D&#039;: (1, 0), &#039;L&#039;: (0, -1)}&lt;br /&gt;
&lt;br /&gt;
    i, j = start&lt;br /&gt;
    for s in range(lungime_harta):&lt;br /&gt;
        directie = harta[s]&lt;br /&gt;
        di, dj = directii[directie]&lt;br /&gt;
        i_nou, j_nou = i + di, j + dj&lt;br /&gt;
&lt;br /&gt;
        if este_in_matrice(i_nou, j_nou, n, m) and (i_nou, j_nou) not in celule_blocate:&lt;br /&gt;
            i, j = i_nou, j_nou&lt;br /&gt;
&lt;br /&gt;
    return i, j&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;labirint4in.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n, m, k = map(int, f.readline().split())&lt;br /&gt;
        celule_blocate = [tuple(map(int, f.readline().split())) for _ in range(k)]&lt;br /&gt;
        start = tuple(map(int, f.readline().split()))&lt;br /&gt;
        lungime_harta = int(f.readline())&lt;br /&gt;
        harta = f.readline().strip()&lt;br /&gt;
&lt;br /&gt;
    if este_valid(n, m, k, celule_blocate, start, lungime_harta):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        rezultat = rezolva_labirint(n, m, celule_blocate, start, lungime_harta, harta)&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;labirint4out.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
            f.write(f&amp;quot;{rezultat[0]} {rezultat[1]}\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2554_-_Or&amp;diff=8702</id>
		<title>2554 - Or</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2554_-_Or&amp;diff=8702"/>
		<updated>2023-12-29T20:22:17Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Se consideră numerele naturale X, N și o matrice pătratică A cu N x N elemente numere naturale.  == Cerința == Determinați aria minimă a unei submatrice cu proprietatea că efectuând operația or pe biți or între toate elementele submatricei se obține valoarea X.  == Date de intrare == Fișierul de intrare orin.txt conține pe primul rând numerele naturale X și N, separate printr-un spațiu. Pe următoarele N linii sunt câte N elemente numere natura...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Se consideră numerele naturale X, N și o matrice pătratică A cu N x N elemente numere naturale.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Determinați aria minimă a unei submatrice cu proprietatea că efectuând operația or pe biți or între toate elementele submatricei se obține valoarea X.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare orin.txt conține pe primul rând numerele naturale X și N, separate printr-un spațiu. Pe următoarele N linii sunt câte N elemente numere naturale separate printr-un spațiu, reprezentând elementele matricei.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire orout.txt va conține un număr natural reprezentând aria minimă a unei submatrice.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 2 &amp;amp;les; &#039;&#039;&#039;N&#039;&#039;&#039; &amp;amp;les; 500&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;A[i][j]&#039;&#039;&#039; &amp;amp;les; 2^31&lt;br /&gt;
* Operația pe biți or dintre două numere întregi este un întreg în care al i-lea bit este 0 dacă și numai dacă bitul i din ambele numere este 0.&lt;br /&gt;
* Se garantează că pentru toate datele de intrare există mereu o soluție și dimensiunea acesteia este cel puțin 2&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; orin.txt&lt;br /&gt;
: 11 4&lt;br /&gt;
: 5 9 1 8&lt;br /&gt;
: 7 7 3 1&lt;br /&gt;
: 2 3 1 9&lt;br /&gt;
: 5 5 8 7&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; orout.txt&lt;br /&gt;
: 3&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Submatricea este formată din elementele 3 1 9 de pe linia a treia (3 | 1 | 9 = 11).&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; orin.txt&lt;br /&gt;
: 11 1&lt;br /&gt;
: 5 9 1 8&lt;br /&gt;
: 7 7 3 1&lt;br /&gt;
: 2 3 1 9&lt;br /&gt;
: 5 5 8 7&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#2554 - Or&lt;br /&gt;
&lt;br /&gt;
import functools&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def valideaza_input(n, matrice):&lt;br /&gt;
    if not 2 &amp;lt;= n &amp;lt;= 500:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for rand in matrice:&lt;br /&gt;
        for element in rand:&lt;br /&gt;
            if not 1 &amp;lt;= element &amp;lt; 2 ** 31:&lt;br /&gt;
                return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculeaza_aria_minima(x, n, matrice):&lt;br /&gt;
    aria_minima = float(&#039;inf&#039;)&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            for k in range(i, n):&lt;br /&gt;
                for l in range(j, n):&lt;br /&gt;
                    submatrice = [rand[j:l + 1] for rand in matrice[i:k + 1]]&lt;br /&gt;
                    rezultat_or_pe_biti = functools.reduce(lambda x, y: x | y,&lt;br /&gt;
                                                           [element for rand in submatrice for element in rand])&lt;br /&gt;
&lt;br /&gt;
                    if rezultat_or_pe_biti == x:&lt;br /&gt;
                        aria_minima = min(aria_minima, (k - i + 1) * (l - j + 1))&lt;br /&gt;
&lt;br /&gt;
    return aria_minima&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;orin.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        x, n = map(int, f.readline().split())&lt;br /&gt;
        matrice = [list(map(int, f.readline().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if valideaza_input(n, matrice):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        rezultat = calculeaza_aria_minima(x, n, matrice)&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;orout.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
            f.write(str(rezultat))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2101_-_Traseu2&amp;diff=8701</id>
		<title>2101 - Traseu2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2101_-_Traseu2&amp;diff=8701"/>
		<updated>2023-12-29T19:36:39Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Fie un labirint reprezentat ca o matrice pătratică cu n linii (numerotate de sus în jos de la 1 la n) şi n coloane (numerotate de la stânga la dreapta de la 1 la n). Elementele matricei pot fi 0 (semnificând culoar de trecere) sau 1 (semnificând zid). Un roboţel se mişcă prin labirint după un anumit traseu, specificat ca o succesiune de direcţii de mişcare. Direcţiile pot fi:  • N (nord), adică din poziţia curentă (x,y) robotul se deplasează...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Fie un labirint reprezentat ca o matrice pătratică cu n linii (numerotate de sus în jos de la 1 la n) şi n coloane (numerotate de la stânga la dreapta de la 1 la n). Elementele matricei pot fi 0 (semnificând culoar de trecere) sau 1 (semnificând zid). Un roboţel se mişcă prin labirint după un anumit traseu, specificat ca o succesiune de direcţii de mişcare. Direcţiile pot fi:&lt;br /&gt;
&lt;br /&gt;
• N (nord), adică din poziţia curentă (x,y) robotul se deplasează în poziţia (x-1,y), dacă nu este zid; &amp;lt;br&amp;gt;&lt;br /&gt;
• S (sud), adică din poziţia curentă (x,y) robotul se deplasează în poziţia (x+1,y), dacă nu este zid;&amp;lt;br&amp;gt;&lt;br /&gt;
• E (est), adică din poziţia curentă (x,y) robotul se deplasează în poziţia (x,y+1), dacă nu este zid;&amp;lt;br&amp;gt;&lt;br /&gt;
• V (vest), adică din poziţia curentă (x,y) robotul se deplasează în poziţia (x,y-1), dacă nu este zid;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Observaţi că roboţelul nu poate trece prin ziduri, prin urmare, dacă în direcţia de mişcare curentă se află un zid, el nu va efectua deplasarea respectivă.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Dată fiind configuraţia labirintului, poziţia iniţială a roboţelului şi traseul pe care se deplasează acesta, să se determine poziţia finală a robotului.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare traseu2in.txt conţine pe prima linie numărul natural n, reprezentând dimensiunea labirintului. Pe cea de a doua linie sunt scrise două numere naturale L C (cuprinse între 1 şi n), reprezentând poziţia iniţială a roboţelului (L fiind linia, iar C fiind coloana). Pe următoarele n linii se află câte n valori din mulţimea {0,1}, reprezentând configuraţia labirintului. Pe ultima linie se află un şir de caractere din mulţimea {′N′, ′S′, ′E′, ′V′}, reprezentând traseul roboţelului.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieşire traseu2out.txt va conţine o singură linie pe care vor fi scrise două numere naturale cuprinse între 1 şi n reprezentând linia, respectiv coloana poziţiei în care se află roboţelul după parcurgerea traseului. Dacă în timpul deplasării pe traseu roboţelul părăseşte labirintul, pe prima linie vor fi scrise linia, respectiv coloana ultimei poziţii pe care a avut-o roboţelul în labirint.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 100&lt;br /&gt;
* Traseul are lungimea &amp;amp;les; 250&lt;br /&gt;
* Valorile numerice scrise pe aceeaşi linie în fişierul de intrare şi în fişierul de ieşire vor fi separate prin câte un spaţiu.&lt;br /&gt;
* Poziţia iniţială a roboţelului se află pe culoar.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; traseu2in.txt&lt;br /&gt;
: 5&lt;br /&gt;
: 2 1&lt;br /&gt;
: 1 0 0 0 1&lt;br /&gt;
: 0 0 1 0 1&lt;br /&gt;
: 1 0 0 0 0&lt;br /&gt;
: 1 0 0 1 1&lt;br /&gt;
: 1 1 0 0 0&lt;br /&gt;
: ENESES&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; traseu2out.txt&lt;br /&gt;
: 2 4&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Din poziţia (2,1) roboţelul face o deplasare spre Est şi ajunge în poziţia (2,2). Următoarea deplasare este spre Nord şi ajunge în poziţia (1,2). Următoarea deplasare este spre Est şi ajunge în poziţia (1,3). Următoarea deplasare ar fi trebuit să fie spre Sud, dar aceasta nu poate fi efectuată, fiindcă la sud este zid. Următoarea deplasare este spre Est şi ajunge în (1,4), apoi la Sud, şi ajunge în (2,4).&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; traseu2in.txt&lt;br /&gt;
: 3&lt;br /&gt;
: 2 2&lt;br /&gt;
: 1 0 0&lt;br /&gt;
: 0 0 1&lt;br /&gt;
: 1 0 0&lt;br /&gt;
: VVV&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; traseu2out.txt&lt;br /&gt;
: 2 1&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Din poziţia (2,2) roboţelul se deplasează spre Vest, ajunge în poziţia (2,1).&lt;br /&gt;
La următoarea deplasare spre Vest, roboţelul părăseşte labirintul.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; traseu2in.txt&lt;br /&gt;
: 0&lt;br /&gt;
: 2 1&lt;br /&gt;
: 1 0 0 0 1&lt;br /&gt;
: 0 0 1 0 1&lt;br /&gt;
: 1 0 0 0 0&lt;br /&gt;
: 1 0 0 1 1&lt;br /&gt;
: 1 1 0 0 0&lt;br /&gt;
: ENESES&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#2101 - Traseu2&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, l, c, labirint, traseu):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 100):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= l &amp;lt;= n) or not (1 &amp;lt;= c &amp;lt;= n):&lt;br /&gt;
        return False&lt;br /&gt;
    if len(labirint) != n or any(len(row) != n for row in labirint):&lt;br /&gt;
        return False&lt;br /&gt;
    if len(traseu) &amp;gt; 250:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def determina_pozitie_finala(n, l, c, labirint, traseu):&lt;br /&gt;
    directii = {&#039;N&#039;: (-1, 0), &#039;S&#039;: (1, 0), &#039;E&#039;: (0, 1), &#039;V&#039;: (0, -1)}&lt;br /&gt;
&lt;br /&gt;
    x, y = l - 1, c - 1&lt;br /&gt;
&lt;br /&gt;
    for directie in traseu:&lt;br /&gt;
        dx, dy = directii[directie]&lt;br /&gt;
        nx, ny = x + dx, y + dy&lt;br /&gt;
&lt;br /&gt;
        if 0 &amp;lt;= nx &amp;lt; n and 0 &amp;lt;= ny &amp;lt; n and labirint[nx][ny] == 0:&lt;br /&gt;
            x, y = nx, ny&lt;br /&gt;
&lt;br /&gt;
    return x + 1, y + 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;traseu2in.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        n = int(fin.readline().strip())&lt;br /&gt;
        l, c = map(int, fin.readline().split())&lt;br /&gt;
        labirint = [list(map(int, fin.readline().split())) for _ in range(n)]&lt;br /&gt;
        traseu = fin.readline().strip()&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n, l, c, labirint, traseu):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        rezultat = determina_pozitie_finala(n, l, c, labirint, traseu)&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;traseu2out.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(f&amp;quot;{rezultat[0]} {rezultat[1]}\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1486_-_Gropi&amp;diff=8627</id>
		<title>1486 - Gropi</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1486_-_Gropi&amp;diff=8627"/>
		<updated>2023-12-28T21:52:19Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Gigel a primit de la prietenul său Programatorul o hartă a grădinii acestuia. Grădina are forma dreptunghiulară şi harta pe care a primit-o Gigel conţine informaţii despre starea culturii de pomi fructiferi. Mai precis ea conţine înălţimile fiecărui copac şi zonele în care s-au săpat gropi dar încă nu au fost plantaţi copaci. Harta grădinii poate fi reprezentată sub forma unei table dreptunghiulare cu N linii, numerotate de la 1 la N de sus în jos, şi M coloane, numerotate de la 1 la M de la stânga la dreapta. În fiecare celulă se află un număr real corespunzător înălţimii copacului sau valoarea 0 corespunzătoare unei gropi.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Cunoscând coordonatele unui punct de pe hartă ajutaţi-l pe Gigel să determine pe care dintre cele 8 direcţii N, NE, E, SE, S, SV, V, NV corespunzătoare acestui punct se află cele mai multe gropi.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare gropiin.txt conține pe prima linie patru numere: N, M reprezentând dimensiunile grădinii şi X, Y reprezentând coordonatele unui punct de pe hartă – linie şi coloană. Pe următoarele N linii sunt şiruri de câte M numere corespunzătoare copacilor respectiv gropilor.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire gropiout.txt va conține pe prima linie direcţia pe care se află cele mai multe gropi şi numărul acestora separate printr-un spațiu. Direcţia este indicată prin una din următoarele valori: N, NE, E, SE, S, SV, V, NV. Dacă sunt două direcţii cu acelaşi număr de gropi se va afişa ultima direcţie considerând sensul orar.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;N, M&#039;&#039;&#039; &amp;amp;les; 1.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;X&#039;&#039;&#039; &amp;amp;les; &#039;&#039;&#039;N&#039;&#039;&#039;, 1 &amp;amp;les; &#039;&#039;&#039;Y&#039;&#039;&#039; &amp;amp;les; &#039;&#039;&#039;M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; gropiin.txt&lt;br /&gt;
: 4 6 3 3&lt;br /&gt;
: 2.2 4.5 0 4.3 0 8.5&lt;br /&gt;
: 6.8 0 9.4 0 7.5 9.3&lt;br /&gt;
: 1.7 0 2.6 4.7 0 0&lt;br /&gt;
: 0 3.2 6.3 8.1 5.2 2.2&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; gropiout.txt&lt;br /&gt;
: E 2&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Din punctul de coordonate 3 3 pe direcţiile: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* SE, S, SV nu se află nicio groapă&amp;lt;br&amp;gt;&lt;br /&gt;
* N, V, NV se afla câte o groapă&amp;lt;br&amp;gt;&lt;br /&gt;
* NE, E se află câte 2 gropi.&amp;lt;br&amp;gt;&lt;br /&gt;
Se va afişa ultima direcţie considerând sensul orar.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; gropiin.txt&lt;br /&gt;
: 1001 6 3 3&lt;br /&gt;
: 2.2 4.5 0 4.3 0 8.5&lt;br /&gt;
: 6.8 0 9.4 0 7.5 9.3&lt;br /&gt;
: 1.7 0 2.6 4.7 0 0&lt;br /&gt;
: 0 3.2 6.3 8.1 5.2 2.2&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1486 - Gropi&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, m, x, y):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000) or not (1 &amp;lt;= m &amp;lt;= 1000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= x &amp;lt;= n) or not (1 &amp;lt;= y &amp;lt;= m):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_gropi_directie(harta, directie, x, y):&lt;br /&gt;
    directii = {&lt;br /&gt;
        &#039;N&#039;: (-1, 0),&lt;br /&gt;
        &#039;NE&#039;: (-1, 1),&lt;br /&gt;
        &#039;E&#039;: (0, 1),&lt;br /&gt;
        &#039;SE&#039;: (1, 1),&lt;br /&gt;
        &#039;S&#039;: (1, 0),&lt;br /&gt;
        &#039;SV&#039;: (1, -1),&lt;br /&gt;
        &#039;V&#039;: (0, -1),&lt;br /&gt;
        &#039;NV&#039;: (-1, -1)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    dx, dy = directii[directie]&lt;br /&gt;
    numar_gropi = 0&lt;br /&gt;
&lt;br /&gt;
    while 1 &amp;lt;= x &amp;lt;= len(harta) and 1 &amp;lt;= y &amp;lt;= len(harta[0]):&lt;br /&gt;
        if harta[x - 1][y - 1] == 0:&lt;br /&gt;
            numar_gropi += 1&lt;br /&gt;
        x, y = x + dx, y + dy&lt;br /&gt;
&lt;br /&gt;
    return numar_gropi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def determina_directie_maxima(x, y, harta):&lt;br /&gt;
    directii = [&#039;N&#039;, &#039;NE&#039;, &#039;E&#039;, &#039;SE&#039;, &#039;S&#039;, &#039;SV&#039;, &#039;V&#039;, &#039;NV&#039;]&lt;br /&gt;
    max_gropi = -1&lt;br /&gt;
    directie_maxima = None&lt;br /&gt;
&lt;br /&gt;
    for directie in directii:&lt;br /&gt;
        x_temp, y_temp = x, y&lt;br /&gt;
        numar_gropi = numar_gropi_directie(harta, directie, x_temp, y_temp)&lt;br /&gt;
&lt;br /&gt;
        if numar_gropi &amp;gt; max_gropi or (numar_gropi == max_gropi and directie_maxima is not None and directii.index(directie) &amp;gt; directii.index(directie_maxima)):&lt;br /&gt;
            max_gropi = numar_gropi&lt;br /&gt;
            directie_maxima = directie&lt;br /&gt;
&lt;br /&gt;
    return directie_maxima, max_gropi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;gropiin.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n, m, x, y = map(int, f.readline().split())&lt;br /&gt;
        harta = [list(map(float, f.readline().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n, m, x, y):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)       &lt;br /&gt;
        &lt;br /&gt;
        directie, numar_gropi = determina_directie_maxima(x, y, harta)&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;gropiout.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
            f.write(f&amp;quot;{directie} {numar_gropi}\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1486_-_Gropi&amp;diff=8626</id>
		<title>1486 - Gropi</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1486_-_Gropi&amp;diff=8626"/>
		<updated>2023-12-28T21:32:23Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Gigel a primit de la prietenul său Programatorul o hartă a grădinii acestuia. Grădina are forma dreptunghiulară şi harta pe care a primit-o Gigel conţine informaţii despre starea culturii de pomi fructiferi. Mai precis ea conţine înălţimile fiecărui copac şi zonele în care s-au săpat gropi dar încă nu au fost plantaţi copaci. Harta grădinii poate fi reprezentată sub forma unei table dreptunghiulare cu N linii, numerotate de la 1 la N de sus...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Gigel a primit de la prietenul său Programatorul o hartă a grădinii acestuia. Grădina are forma dreptunghiulară şi harta pe care a primit-o Gigel conţine informaţii despre starea culturii de pomi fructiferi. Mai precis ea conţine înălţimile fiecărui copac şi zonele în care s-au săpat gropi dar încă nu au fost plantaţi copaci. Harta grădinii poate fi reprezentată sub forma unei table dreptunghiulare cu N linii, numerotate de la 1 la N de sus în jos, şi M coloane, numerotate de la 1 la M de la stânga la dreapta. În fiecare celulă se află un număr real corespunzător înălţimii copacului sau valoarea 0 corespunzătoare unei gropi.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Cunoscând coordonatele unui punct de pe hartă ajutaţi-l pe Gigel să determine pe care dintre cele 8 direcţii N, NE, E, SE, S, SV, V, NV corespunzătoare acestui punct se află cele mai multe gropi.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare gropiin.txt conține pe prima linie patru numere: N, M reprezentând dimensiunile grădinii şi X, Y reprezentând coordonatele unui punct de pe hartă – linie şi coloană. Pe următoarele N linii sunt şiruri de câte M numere corespunzătoare copacilor respectiv gropilor.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire gropiout.txt va conține pe prima linie direcţia pe care se află cele mai multe gropi şi numărul acestora separate printr-un spațiu. Direcţia este indicată prin una din următoarele valori: N, NE, E, SE, S, SV, V, NV. Dacă sunt două direcţii cu acelaşi număr de gropi se va afişa ultima direcţie considerând sensul orar.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;N, M&#039;&#039;&#039; &amp;amp;les; 1.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;X&#039;&#039;&#039; &amp;amp;les; &#039;&#039;&#039;N&#039;&#039;&#039;, 1 &amp;amp;les; &#039;&#039;&#039;Y&#039;&#039;&#039; &amp;amp;les; &#039;&#039;&#039;M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; gropiin.txt&lt;br /&gt;
: 4 6 3 3&lt;br /&gt;
: 2.2 4.5 0 4.3 0 8.5&lt;br /&gt;
: 6.8 0 9.4 0 7.5 9.3&lt;br /&gt;
: 1.7 0 2.6 4.7 0 0&lt;br /&gt;
: 0 3.2 6.3 8.1 5.2 2.2&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; gropiout.txt&lt;br /&gt;
: E 2&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Din punctul de coordonate 3 3 pe direcţiile: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* SE, S, SV nu se află nicio groapă&amp;lt;br&amp;gt;&lt;br /&gt;
* N, V, NV se afla câte o groapă&amp;lt;br&amp;gt;&lt;br /&gt;
* NE, E se află câte 2 gropi.&amp;lt;br&amp;gt;&lt;br /&gt;
Se va afişa ultima direcţie considerând sensul orar.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; gropiin.txt&lt;br /&gt;
: 1001 6 3 3&lt;br /&gt;
: 2.2 4.5 0 4.3 0 8.5&lt;br /&gt;
: 6.8 0 9.4 0 7.5 9.3&lt;br /&gt;
: 1.7 0 2.6 4.7 0 0&lt;br /&gt;
: 0 3.2 6.3 8.1 5.2 2.2&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1486 - Gropi&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, m, x, y):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000) or not (1 &amp;lt;= m &amp;lt;= 1000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= x &amp;lt;= n) or not (1 &amp;lt;= y &amp;lt;= m):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_gropi_directie(harta, directie, x, y):&lt;br /&gt;
    directii = {&lt;br /&gt;
        &#039;n&#039;: (-1, 0),&lt;br /&gt;
        &#039;nE&#039;: (-1, 1),&lt;br /&gt;
        &#039;E&#039;: (0, 1),&lt;br /&gt;
        &#039;SE&#039;: (1, 1),&lt;br /&gt;
        &#039;S&#039;: (1, 0),&lt;br /&gt;
        &#039;SV&#039;: (1, -1),&lt;br /&gt;
        &#039;V&#039;: (0, -1),&lt;br /&gt;
        &#039;nV&#039;: (-1, -1)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    dx, dy = directii[directie]&lt;br /&gt;
    numar_gropi = 0&lt;br /&gt;
&lt;br /&gt;
    while 1 &amp;lt;= x &amp;lt;= len(harta) and 1 &amp;lt;= y &amp;lt;= len(harta[0]):&lt;br /&gt;
        if harta[x - 1][y - 1] == 0:&lt;br /&gt;
            numar_gropi += 1&lt;br /&gt;
        x, y = x + dx, y + dy&lt;br /&gt;
&lt;br /&gt;
    return numar_gropi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def determina_directie_maxima(x, y, harta):&lt;br /&gt;
    directii = [&#039;n&#039;, &#039;nE&#039;, &#039;E&#039;, &#039;SE&#039;, &#039;S&#039;, &#039;SV&#039;, &#039;V&#039;, &#039;nV&#039;]&lt;br /&gt;
    max_gropi = -1&lt;br /&gt;
    directie_maxima = None&lt;br /&gt;
&lt;br /&gt;
    for directie in directii:&lt;br /&gt;
        x_temp, y_temp = x, y&lt;br /&gt;
        numar_gropi = numar_gropi_directie(harta, directie, x_temp, y_temp)&lt;br /&gt;
&lt;br /&gt;
        if numar_gropi &amp;gt; max_gropi or (numar_gropi == max_gropi and directie_maxima is not None and directii.index(directie) &amp;gt; directii.index(directie_maxima)):&lt;br /&gt;
            max_gropi = numar_gropi&lt;br /&gt;
            directie_maxima = directie&lt;br /&gt;
&lt;br /&gt;
    return directie_maxima, max_gropi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;gropiin.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n, m, x, y = map(int, f.readline().split())&lt;br /&gt;
        harta = [list(map(float, f.readline().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n, m, x, y):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)       &lt;br /&gt;
        &lt;br /&gt;
        directie, numar_gropi = determina_directie_maxima(x, y, harta)&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;gropiout.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
            f.write(f&amp;quot;{directie} {numar_gropi}\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1076_-_Grupe&amp;diff=8625</id>
		<title>1076 - Grupe</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1076_-_Grupe&amp;diff=8625"/>
		<updated>2023-12-28T21:11:31Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Se consideră un tablou bidimensional cu m linii, n coloane şi elemente numere naturale. Pentru fiecare element se determină numărul de divizori pozitivi. Se formează apoi grupe cu elementele tabloului care au acelaşi număr de divizori, grupe notate G1, G2, …, Gk. Se ordonează descrescător grupele după numărul de elemente ce le conţin. Se ştie că o grupă G1 se află în faţa unei alte grupe G2 dacă G1 are mai multe elemente decât G2 sau, în ca...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Se consideră un tablou bidimensional cu m linii, n coloane şi elemente numere naturale. Pentru fiecare element se determină numărul de divizori pozitivi. Se formează apoi grupe cu elementele tabloului care au acelaşi număr de divizori, grupe notate G1, G2, …, Gk. Se ordonează descrescător grupele după numărul de elemente ce le conţin. Se ştie că o grupă G1 se află în faţa unei alte grupe G2 dacă G1 are mai multe elemente decât G2 sau, în cazul în care cele două grupe conţin acelaşi număr de elemente, numărul de divizori ai elementelor din grupa G1 este mai mare decât numărul de divizori ai elementelor din grupa G2. După ordonarea descrescătoare a grupelor, notăm prima grupă cu A şi a doua grupă cu B. În cazul în care toate elementele vor avea acelaşi număr de divizori, va exista o singură grupă, grupa A.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieţi un program care citeşte m, n, elementele tabloului şi afişează:&amp;lt;br&amp;gt;&lt;br /&gt;
a) numărul de divizori pozitivi pentru grupa A, numărul de elemente din grupă şi cea mai mare valoare din grupă;&amp;lt;br&amp;gt;&lt;br /&gt;
b) numărul de divizori pozitivi pentru grupa B, numărul de elemente din grupă şi cea mai mare valoare din grupă; în cazul în care nu există grupa a doua, se va afişa de trei ori valoarea 0.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare grupein.txt conține pe prima linie valorile lui m şi n separate printr-un spaţiu, iar pe celelalte m linii câte n elemente separate două câte două printr-un spaţiu, reprezentând elementele tabloului.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire grupeout.txt va conține:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* pe prima linie valoarea numărului de divizori pozitivi din grupa A, numărul de elemente din grupa A şi cea mai mare valoare din grupa A, valori separate două câte două printr-un singur spaţiu;&lt;br /&gt;
* pe a doua linie valoarea numărului de divizori pozitivi din grupa B, numărul de elemente din grupa B şi cea mai mare valoare din grupa B, valori separate două câte două printr-un singur spaţiu.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n, m&#039;&#039;&#039; &amp;amp;les; 100&lt;br /&gt;
* elementele tabloului bidimensional iniţial sunt mai mici sau egale decât 100.000 şi mai mari decât 1;&lt;br /&gt;
* o grupă poate fi compusă dintr-un singur element.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; grupein.txt&lt;br /&gt;
: 2 3&lt;br /&gt;
: 16 2 4&lt;br /&gt;
: 10 6 5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; grupeout.txt&lt;br /&gt;
: 4 2 10&lt;br /&gt;
: 2 2 5&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Numărul divizorilor pentru fiecare element al tabloului: 5 divizori (pentru valoarea 16), 2 divizori (pentru valoarea 2), 3 divizori (pentru valoarea 4), 4 divizori (pentru valoarea 10), 4 divizori (pentru valoarea 6) şi 2 divizori (pentru valoarea 5).&lt;br /&gt;
&lt;br /&gt;
Se pot forma grupele: cu 2 divizori (elementele 2, 5), cu 4 divizori (elementele 10, 6), cu 3 divizori (elementul 4) şi cu 5 divizori (elementul 16). După ordonarea descrescătoare a grupelor, grupele cu cele mai multe elemente sunt cele care conţin 2 elemente: (10, 6), respectiv (2, 5). Pentru că elementele 10 şi 6 au 4 divizori, ele vor face parte din grupa A, iar 2 şi 5, având doar 2 divizori fiecare, vor face parte din grupa B. Deci grupa A are 4 divizori, 2 elemente şi cel mai mare element din grupă este 10, iar grupa B are 2 divizori, 2 elemente şi cel mai mare element din grupă este 5.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; grupein.txt&lt;br /&gt;
: 2 3&lt;br /&gt;
: 2 15 4&lt;br /&gt;
: 10 6 5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
: 4 3 15&lt;br /&gt;
: 2 2 5&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Numărul divizorilor pentru fiecare element al tabloului: 2 divizori (pentru valoarea 2), 4 divizori (pentru valoarea 15), 3 divizori (pentru valoarea 4), 4 divizori (pentru valoarea 10), 4 divizori (pentru valoarea 6) şi 2 divizori (pentru valoarea 5).&lt;br /&gt;
&lt;br /&gt;
După ordonarea descrescătoare a grupelor, grupa cu cele mai multe elemente este cea formată din elementele 10, 6, 15, fiecare element având exact 4 divizori. Aceasta va fi grupa A. Grupa B va fi cea formată din două elemente, celelaltă grupă având un singur element. Deci grupa A are 4 divizori, 3 elemente şi cel mai mare element din grupă este 15, iar grupa B are 2 divizori, 2 elemente şi cel mai mare element din grupă este 5.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; grupein.txt&lt;br /&gt;
: 2 101&lt;br /&gt;
: 16 2 4&lt;br /&gt;
: 10 6 5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1076 - Grupe&lt;br /&gt;
&lt;br /&gt;
def validare_input(m, n, elemente):&lt;br /&gt;
    if not (0 &amp;lt; m &amp;lt; 101 and 0 &amp;lt; n &amp;lt; 101):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if len(elemente) != m:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for linie in elemente:&lt;br /&gt;
        if len(linie) != n:&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
        for element in linie:&lt;br /&gt;
            if not (1 &amp;lt; element &amp;lt;= 100000):&lt;br /&gt;
                return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numara_divizorii(numar):&lt;br /&gt;
    divizori = 0&lt;br /&gt;
    for i in range(1, numar + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            divizori += 1&lt;br /&gt;
    return divizori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;grupein.txt&amp;quot;, &amp;quot;r&amp;quot;) as fisier:&lt;br /&gt;
        m, n = map(int, fisier.readline().split())&lt;br /&gt;
        elemente = [list(map(int, fisier.readline().split())) for _ in range(m)]&lt;br /&gt;
&lt;br /&gt;
    if validare_input(m, n, elemente):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        grupe = {}&lt;br /&gt;
&lt;br /&gt;
        for linie in elemente:&lt;br /&gt;
            for element in linie:&lt;br /&gt;
                divizori = numara_divizorii(element)&lt;br /&gt;
                if divizori not in grupe:&lt;br /&gt;
                    grupe[divizori] = []&lt;br /&gt;
                grupe[divizori].append(element)&lt;br /&gt;
&lt;br /&gt;
        grupe_sortate = sorted(grupe.items(), key=lambda x: (len(x[1]), max(x[1])), reverse=True)&lt;br /&gt;
&lt;br /&gt;
        grupa_a = grupe_sortate[0]&lt;br /&gt;
        grupa_b = grupe_sortate[1] if len(grupe_sortate) &amp;gt; 1 else (0, [])&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;grupeout.txt&amp;quot;, &amp;quot;w&amp;quot;) as fisier_iesire:&lt;br /&gt;
            fisier_iesire.write(f&amp;quot;{grupa_a[0]} {len(grupa_a[1])} {max(grupa_a[1])}\n&amp;quot;)&lt;br /&gt;
            fisier_iesire.write(f&amp;quot;{grupa_b[0]} {len(grupa_b[1])} {max(grupa_b[1])}\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1378_-_Flori2&amp;diff=8611</id>
		<title>1378 - Flori2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1378_-_Flori2&amp;diff=8611"/>
		<updated>2023-12-27T22:17:32Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Fetiţele din grupa mare de la grădiniţă culeg flori şi vor să împletească coroniţe pentru festivitatea de premiere. În grădină sunt mai multe tipuri de flori. Fiecare dintre cele n fetiţe culege un buchet având acelaşi număr de flori, însă nu neapărat de acelaşi tip. Pentru a împleti coroniţele fetiţele se împart în grupe. O fetiţă se poate ataşa unui grup numai dacă are cel puţin o floare de acelaşi tip cu cel puţin o altă fetiţ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Fetiţele din grupa mare de la grădiniţă culeg flori şi vor să împletească coroniţe pentru festivitatea de premiere. În grădină sunt mai multe tipuri de flori. Fiecare dintre cele n fetiţe culege un buchet având acelaşi număr de flori, însă nu neapărat de acelaşi tip. Pentru a împleti coroniţele fetiţele se împart în grupe. O fetiţă se poate ataşa unui grup numai dacă are cel puţin o floare de acelaşi tip cu cel puţin o altă fetiţă din grupul respectiv.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Fiind dat un număr natural n reprezentând numărul fetiţelor şi numărul natural m reprezentând numărul de flori dintr-un buchet, să se determine grupele care se formează.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare flori2in.txt conţine pe prima linie, separate printr-un spaţiu, numerele naturale n şi m, reprezentând numărul de fetiţe şi respectiv numărul de flori din fiecare buchet. Fiecare dintre următoarele n linii conţine, pentru fiecare fetiţă, câte m valori separate prin câte un spaţiu reprezentând tipurile de flori culese.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieşire flori2out.txt va conţine pe fiecare linie câte o grupă formată din numerele de ordine ale fetiţelor separate prin câte un spaţiu, în ordine crescătoare, ca în exemplu.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 150&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;m&#039;&#039;&#039; &amp;amp;les; 100&lt;br /&gt;
* Tipul unei flori este un număr întreg din intervalul [0,100].&lt;br /&gt;
* Într-o grupă numerele de ordine ale fetiţelor trebuie date în ordine strict crescătoare.&lt;br /&gt;
* În fişierul de ieşire grupele vor fi afişate în ordinea crescătoare a numărului de ordine al primei fetiţe din grupă.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; flori2in.txt&lt;br /&gt;
: 5 4&lt;br /&gt;
: 1 2 3 4&lt;br /&gt;
: 5 6 9 6&lt;br /&gt;
: 1 1 1 1 &lt;br /&gt;
: 2 4 4 3&lt;br /&gt;
: 7 7 7 7&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; flori2out.txt&lt;br /&gt;
: 1 3 4 &lt;br /&gt;
: 2&lt;br /&gt;
: 5&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Fetiţele 1 şi 3 au cules amândouă flori de tipul 1, iar fetiţele 1 şi 4 au cules amândouă flori de tipurile 2, 3 şi 4, deci toate cele trei fetiţe (1, 3, 4) se vor afla în aceiaşi grupă. Fetiţele 2 şi 5 vor forma fiecare câte o grupă deoarece nu au cules flori de acelaşi tip cu nici una dintre celelalte fetiţe.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; flori2in.txt&lt;br /&gt;
: 151 4&lt;br /&gt;
: 1 2 3 4&lt;br /&gt;
: 5 6 9 6&lt;br /&gt;
: 1 1 1 1 &lt;br /&gt;
: 2 4 4 3&lt;br /&gt;
: 7 7 7 7&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1378 - Flori2&lt;br /&gt;
&lt;br /&gt;
def valideaza_input(n, m, flori_fete):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 150 and 1 &amp;lt;= m &amp;lt;= 100):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for lista_flori in flori_fete:&lt;br /&gt;
        if len(lista_flori) != m:&lt;br /&gt;
            return False&lt;br /&gt;
        for tip_floare in lista_flori:&lt;br /&gt;
            if not (0 &amp;lt;= tip_floare &amp;lt;= 100):&lt;br /&gt;
                return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citeste_date_intrare():&lt;br /&gt;
    with open(&amp;quot;flori2in.txt&amp;quot;, &amp;quot;r&amp;quot;) as file:&lt;br /&gt;
        n, m = map(int, file.readline().split())&lt;br /&gt;
        flori_fete = [list(map(int, file.readline().split())) for _ in range(n)]&lt;br /&gt;
    return n, m, flori_fete&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def grupare_fete(n, flori_fete):&lt;br /&gt;
    grupuri = []&lt;br /&gt;
    vizitat = [False] * n&lt;br /&gt;
&lt;br /&gt;
    def dfs(nod, grup):&lt;br /&gt;
        vizitat[nod] = True&lt;br /&gt;
        grup.append(nod + 1)&lt;br /&gt;
&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            if not vizitat[i] and any(flor in flori_fete[nod] for flor in flori_fete[i]):&lt;br /&gt;
                dfs(i, grup)&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        if not vizitat[i]:&lt;br /&gt;
            grup = []&lt;br /&gt;
            dfs(i, grup)&lt;br /&gt;
            grupuri.append(sorted(grup))&lt;br /&gt;
&lt;br /&gt;
    return grupuri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def scrie_date_iesire(grupuri):&lt;br /&gt;
    with open(&amp;quot;flori2out.txt&amp;quot;, &amp;quot;w&amp;quot;) as file:&lt;br /&gt;
        for grup in grupuri:&lt;br /&gt;
            file.write(&amp;quot; &amp;quot;.join(map(str, grup)) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n, m, flori_fete = citeste_date_intrare()&lt;br /&gt;
    if valideaza_input(n, m, flori_fete):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        rezultat = grupare_fete(n, flori_fete)&lt;br /&gt;
        scrie_date_iesire(rezultat)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1515_-_Gradina&amp;diff=8589</id>
		<title>1515 - Gradina</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1515_-_Gradina&amp;diff=8589"/>
		<updated>2023-12-27T20:31:30Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Păcală a reușit să ducă la bun sfârșit înțelegerea cu boierul căruia-i fusese slugă și, conform învoielii, boierul trebuie să-l răsplătească dându-i o parte din livada sa cu pomi fructiferi. Boierul este un om foarte ordonat, așa că livada sa este un pătrat cu latura de N metri unde, pe vremuri, fuseseră plantate N rânduri cu câte N pomi fiecare. Orice pom fructifer putea fi identificat cunoscând numărul rândului pe care se află și po...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Păcală a reușit să ducă la bun sfârșit înțelegerea cu boierul căruia-i fusese slugă și, conform învoielii, boierul trebuie să-l răsplătească dându-i o parte din livada sa cu pomi fructiferi. Boierul este un om foarte ordonat, așa că livada sa este un pătrat cu latura de N metri unde, pe vremuri, fuseseră plantate N rânduri cu câte N pomi fiecare. Orice pom fructifer putea fi identificat cunoscând numărul rândului pe care se află și poziția sa în cadrul rândului respectiv. Cu timpul, unii pomi s-au uscat şi acum mai sunt doar P pomi. Păcală trebuie să-și delimiteze în livadă o grădină pătrată cu latura de K metri.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Cunoscând dimensiunile livezii și grădinii, numărul pomilor din livadă și poziția fiecăruia, determinați numărul maxim de pomi dintr-o grădină pătrată de latură K și numărul modurilor în care poate fi amplasată grădina cu numărul maxim de pomi.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul gradinain.txt conține: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* pe prima linie numerele naturale N, P și K, separate prin câte un spațiu, cu semnificaţia din enunţ; &amp;lt;br&amp;gt;&lt;br /&gt;
* pe următoarele P linii câte 2 numere naturale Lin și Col, separate printr-un spațiu, reprezentând numărul rândului, respectiv poziția în rând a fiecărui pom din livadă.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul gradinaout.txt va conține:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* pe prima linie numărul maxim de pomi fructiferi dintr-o grădină pătrată cu latura de K metri;&amp;lt;br&amp;gt;&lt;br /&gt;
* pe a doua linie numărul de posibilități de a amplasa grădina astfel încât să conțină numărul maxim de pomi determinat.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 2 &amp;amp;les; &#039;&#039;&#039;N&#039;&#039;&#039; &amp;amp;les; 1.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;P&#039;&#039;&#039; &amp;amp;les; N*N&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;K&#039;&#039;&#039; &amp;amp;les; N&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; gradinain.txt&lt;br /&gt;
: 12 10 5 &lt;br /&gt;
: 4 3 &lt;br /&gt;
: 5 5 &lt;br /&gt;
: 6 8 &lt;br /&gt;
: 7 3 &lt;br /&gt;
: 7 7 &lt;br /&gt;
: 8 8 &lt;br /&gt;
: 9 3 &lt;br /&gt;
: 9 6 &lt;br /&gt;
: 10 10 &lt;br /&gt;
: 11 5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; gradinaout.txt&lt;br /&gt;
: 5&lt;br /&gt;
: 5&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Grădina lui Păcală poate avea maximum 5 pomi fructiferi. Ea poate fi amplasată în 5 moduri, având colțul stânga-sus de coordonate: (5, 3), (5, 4), (5, 5), (6, 6), (7, 3).&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; gradinain.txt&lt;br /&gt;
: 1 10 5 &lt;br /&gt;
: 4 3 &lt;br /&gt;
: 5 5 &lt;br /&gt;
: 6 8 &lt;br /&gt;
: 7 3 &lt;br /&gt;
: 7 7 &lt;br /&gt;
: 8 8 &lt;br /&gt;
: 9 3 &lt;br /&gt;
: 9 6 &lt;br /&gt;
: 10 10 &lt;br /&gt;
: 11 5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1515 - Gradina&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, p, k, pomii):&lt;br /&gt;
    if not (2 &amp;lt;= n &amp;lt;= 1000) or not (1 &amp;lt;= p &amp;lt;= n*n) or not (1 &amp;lt;= k &amp;lt;= n):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for lin, col in pomii:&lt;br /&gt;
        if not (1 &amp;lt;= lin &amp;lt;= n) or not (1 &amp;lt;= col &amp;lt;= n):&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_maxim_pomi(n, p, k, pomii):&lt;br /&gt;
    matrice_pomi = [[0] * n for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    for i in range(p):&lt;br /&gt;
        lin, col = pomii[i]&lt;br /&gt;
        matrice_pomi[lin - 1][col - 1] = 1&lt;br /&gt;
&lt;br /&gt;
    max_pomi = 0&lt;br /&gt;
    numar_posibilitati = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(n - k + 1):&lt;br /&gt;
        for j in range(n - k + 1):&lt;br /&gt;
            suma_pomi = sum(sum(matrice_pomi[i + x][j + y] for y in range(k)) for x in range(k))&lt;br /&gt;
            if suma_pomi &amp;gt; max_pomi:&lt;br /&gt;
                max_pomi = suma_pomi&lt;br /&gt;
                numar_posibilitati = 1&lt;br /&gt;
            elif suma_pomi == max_pomi:&lt;br /&gt;
                numar_posibilitati += 1&lt;br /&gt;
&lt;br /&gt;
    return max_pomi, numar_posibilitati&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citire_date_input():&lt;br /&gt;
    with open(&amp;quot;gradinain.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n, p, k = map(int, f.readline().split())&lt;br /&gt;
        pomii = [tuple(map(int, f.readline().split())) for _ in range(p)]&lt;br /&gt;
    return n, p, k, pomii&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def scriere_date_output(max_pomi, numar_posibilitati):&lt;br /&gt;
    with open(&amp;quot;gradinaout.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        f.write(str(max_pomi) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        f.write(str(numar_posibilitati) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n, p, k, pomii = citire_date_input()&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n, p, k, pomii):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        max_pomi, numar_posibilitati = numar_maxim_pomi(n, p, k, pomii)&lt;br /&gt;
        scriere_date_output(max_pomi, numar_posibilitati)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3370_-_Amedie&amp;diff=8586</id>
		<title>3370 - Amedie</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3370_-_Amedie&amp;diff=8586"/>
		<updated>2023-12-27T20:15:15Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț ==  Pentru o matrice A cu n linii şi m coloane, ce conţine numere naturale, se defineşte amedia matricei A ca fiind valoarea situată la mijlocul şirului ordonat crescător format din toate elementele matricei A, dacă numărul de elemente din acest şir este impar, respectiv cea mai mică valoare dintre cele două valori situate la mijloc, dacă numărul de elemente din acest şir este par. Se definesc trei tipuri de operaţii ce pot fi aplicate matricei A: &amp;lt;br...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
&lt;br /&gt;
Pentru o matrice A cu n linii şi m coloane, ce conţine numere naturale, se defineşte amedia matricei A ca fiind valoarea situată la mijlocul şirului ordonat crescător format din toate elementele matricei A, dacă numărul de elemente din acest şir este impar, respectiv cea mai mică valoare dintre cele două valori situate la mijloc, dacă numărul de elemente din acest şir este par. Se definesc trei tipuri de operaţii ce pot fi aplicate matricei A: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* operaţia de &amp;lt;b&amp;gt;tip 1&amp;lt;/b&amp;gt;, notată cu L x, ce constă în eliminarea liniei cu indicele x din matrice;&amp;lt;br&amp;gt;&lt;br /&gt;
* operaţia de &amp;lt;b&amp;gt;tip 2&amp;lt;/b&amp;gt;, notată cu C y, ce constă în eliminarea coloanei cu indicele y din matrice;&amp;lt;br&amp;gt;&lt;br /&gt;
* operaţia de &amp;lt;b&amp;gt;tip 3&amp;lt;/b&amp;gt;, notată cu Q, ce are ca rezultat determinarea valorii amediei matricei.&amp;lt;br&amp;gt;&lt;br /&gt;
Ami este pasionată de matematică şi trebuie să rezolve următoarea problemă: pentru o matrice A asupra căreia se aplică un şir de astfel de operaţii, să se stabilească răspunsurile la toate operaţiile de tip 3.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieţi un program care determină valorile obţinute în urma efectuării operaţiilor de tip 3 din şirul de operaţii aplicate matricei A.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare amediein.txt conţine pe prima linie trei numere naturale n, m şi q despărţite prin câte un spaţiu, ce reprezintă, în ordine, numărul de linii din matricea A, numărul de coloane din matricea A şi numărul de operaţii ce se aplică matricei A. Pe fiecare dintre următoarele n linii din fişier se află câte m numere naturale, separate prin câte un spaţiu, ce reprezintă, în ordine, elementele aflate pe liniile matricei A. Fiecare dintre următoarele q linii din fişier conţine un şir de caractere ce reprezintă o operaţie ce se va aplica matricei A.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire amedieout.txt va conţine valorile obţinute, în ordine, la toate operaţiile Q din şirul de operaţii aplicate matricei A. Fiecare dintre valorile obţinute se va afişa pe câte o linie din fişier, în ordinea stabilită în şirul de operaţii.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 2 &amp;amp;les; &#039;&#039;&#039;n, m&#039;&#039;&#039; &amp;amp;les; 800&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;q&#039;&#039;&#039; &amp;amp;les; 2.000&lt;br /&gt;
* elementele matricei A sunt numere naturale nenule, strict mai mici decât 100.001&lt;br /&gt;
* indicii de linie şi coloană din matrice sunt notaţi începând cu 1&lt;br /&gt;
* operaţiile de tipul 1 şi 2 se aplică utilizând indicii liniilor şi coloanelor din matricea A iniţială;&lt;br /&gt;
* se garantează că orice operaţie din fişierul de intrare poate fi efectuată.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; amediein.txt&lt;br /&gt;
: 4 4 4&lt;br /&gt;
: 1 2 3 4 &lt;br /&gt;
: 5 6 7 8 &lt;br /&gt;
: 9 10 11 12&lt;br /&gt;
: 13 14 15 16&lt;br /&gt;
: L 2&lt;br /&gt;
: Q&lt;br /&gt;
: C 1&lt;br /&gt;
: Q&lt;br /&gt;
; Ieșire&lt;br /&gt;
; Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; amedieout.txt&lt;br /&gt;
: 10&lt;br /&gt;
: 11&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
L 2&lt;br /&gt;
&lt;br /&gt;
!!&lt;br /&gt;
&lt;br /&gt;
Prin aplicarea operaţiei de tip 3 obţinem valoarea 10.&lt;br /&gt;
&lt;br /&gt;
C 1&lt;br /&gt;
&lt;br /&gt;
!!&lt;br /&gt;
&lt;br /&gt;
Prin aplicarea operaţiei de tip 3 obţinem valoarea 11.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; amediein.txt&lt;br /&gt;
: 1 801 0&lt;br /&gt;
: 1 2 3 4 &lt;br /&gt;
: 5 6 7 8 &lt;br /&gt;
: 9 10 11 12&lt;br /&gt;
: 13 14 15 16&lt;br /&gt;
: L 2&lt;br /&gt;
: Q&lt;br /&gt;
: C 1&lt;br /&gt;
: Q&lt;br /&gt;
; Ieșire&lt;br /&gt;
; Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#3370 - Amedie&lt;br /&gt;
&lt;br /&gt;
def valideaza_input(n, m, q, matrice, operatii):&lt;br /&gt;
    if not (2 &amp;lt;= n &amp;lt;= 800) or not (2 &amp;lt;= m &amp;lt;= 800) or not (0 &amp;lt; q &amp;lt;= 2000):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for rand in matrice:&lt;br /&gt;
        if len(rand) != m or any(not(0 &amp;lt; int(elem) &amp;lt; 100001) for elem in rand):&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    for op in operatii:&lt;br /&gt;
        if op[0] == &#039;L&#039;:&lt;br /&gt;
            if not (1 &amp;lt;= int(op[1]) &amp;lt;= n):&lt;br /&gt;
                return False&lt;br /&gt;
        elif op[0] == &#039;C&#039;:&lt;br /&gt;
            if not (1 &amp;lt;= int(op[1]) &amp;lt;= m):&lt;br /&gt;
                return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculeaza_mediana(matrice):&lt;br /&gt;
    amedie = sorted([elem for rand in matrice for elem in rand])&lt;br /&gt;
    mijloc = len(amedie) // 2&lt;br /&gt;
&lt;br /&gt;
    if len(amedie) % 2 == 1:&lt;br /&gt;
        return amedie[mijloc]&lt;br /&gt;
    else:&lt;br /&gt;
        return min(amedie[mijloc - 1], amedie[mijloc])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def aplica_operatii(matrice, operatii):&lt;br /&gt;
    rezultate = []&lt;br /&gt;
&lt;br /&gt;
    for op in operatii:&lt;br /&gt;
        if op[0] == &#039;L&#039;:&lt;br /&gt;
            del matrice[int(op[1]) - 1]&lt;br /&gt;
        elif op[0] == &#039;C&#039;:&lt;br /&gt;
            for rand in matrice:&lt;br /&gt;
                del rand[int(op[1]) - 1]&lt;br /&gt;
&lt;br /&gt;
        elif op[0] == &#039;Q&#039;:&lt;br /&gt;
            rezultate.append(calculeaza_mediana(matrice))&lt;br /&gt;
&lt;br /&gt;
    return rezultate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;amediein.txt&#039;, &#039;r&#039;) as infile:&lt;br /&gt;
        n, m, q = map(int, infile.readline().split())&lt;br /&gt;
        matrice = [list(map(int, infile.readline().split())) for _ in range(n)]&lt;br /&gt;
        operatii = [linie.strip().split() for linie in infile]&lt;br /&gt;
&lt;br /&gt;
    if valideaza_input(n, m, q, matrice, operatii):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        rezultate = aplica_operatii(matrice, operatii)&lt;br /&gt;
&lt;br /&gt;
        with open(&#039;amedieout.txt&#039;, &#039;w&#039;) as outfile:&lt;br /&gt;
            for rezultat in rezultate:&lt;br /&gt;
                outfile.write(str(rezultat) + &#039;\n&#039;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3788_-_Matricea&amp;diff=8238</id>
		<title>3788 - Matricea</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3788_-_Matricea&amp;diff=8238"/>
		<updated>2023-12-18T11:57:18Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Se consideră o matrice binară B (cu valori 0 sau 1) cu N linii şi M coloane, liniile şi coloanele fiind numerotate de la 1 la N, respectiv de la 1 la M. Matricea B este generată după regula B[i][j] = R[i] xor C[j], unde R şi C sunt vectori binari de lungime N, respectiv M. Numim dreptunghi de colţuri (x1,y1) (x2,y2) cu x1 ≤ x2 şi y1 ≤ y2, mulţimea elementelor B[i][j] cu x1 ≤ i ≤ x2 și y1 ≤ j ≤ y2. Aria unui astfel de dreptunghi este (x2 - x...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Se consideră o matrice binară B (cu valori 0 sau 1) cu N linii şi M coloane, liniile şi coloanele fiind numerotate de la 1 la N, respectiv de la 1 la M. Matricea B este generată după regula B[i][j] = R[i] xor C[j], unde R şi C sunt vectori binari de lungime N, respectiv M. Numim dreptunghi de colţuri (x1,y1) (x2,y2) cu x1 ≤ x2 şi y1 ≤ y2, mulţimea elementelor B[i][j] cu x1 ≤ i ≤ x2 și y1 ≤ j ≤ y2. Aria unui astfel de dreptunghi este (x2 - x1 + 1) * (y2 - y1 + 1).&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Determinaţi numărul maxim de elemente egale cu 0 într-un dreptunghi a cărui arie este exact A, precum şi numărul de dreptunghiuri pentru care se obţine acest număr maxim.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare matricein.txt conține pe prima linie pe prima linie numerele naturale N, M, A separate prin câte un spaţiu. A doua linie va conţine N valori 0 sau 1 separate prin câte un spaţiu, reprezentând elementele vectorului R, iar a treia linie va conţine M valori 0 sau 1 separate prin câte un spaţiu, reprezentând elementele vectorului C.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire matriceout.txt va conține o singură linie pe care vor fi scrise două numere naturale separate printr-un singur spaţiu Zmax Nsol, reprezentând în ordine numărul maxim de elemente egale cu 0 într-un dreptunghi a cărui arie este exact A, precum şi numărul de dreptunghiuri pentru care se obţine acest număr maxim.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;N, M&#039;&#039;&#039; &amp;amp;les; 30.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;A&#039;&#039;&#039; &amp;amp;les; 5.000.000&lt;br /&gt;
* Prin xor se înţelege operatorul sau exclusiv (^ în C++). Mai exact: x ^ y = 1 dacă și numai dacă un operand este 0, iar celălalt 1, deci 0 ^ 0 = 0, 1 ^ 1 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; matricein.txt&lt;br /&gt;
: 2 4 4&lt;br /&gt;
: 0 1&lt;br /&gt;
: 1 0 0 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; matriceout.txt&lt;br /&gt;
: 2 5&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Matricea B este: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 0 0 1 &amp;lt;br&amp;gt;&lt;br /&gt;
0 1 1 0 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Numărul maxim de valori 0 dintr-un dreptunghi de arie 4 este 2. Cele 5 dreptunghiuri de arie 4 cu număr maxim de 0 sunt:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(1,1) (1,4)&amp;lt;br&amp;gt;&lt;br /&gt;
(2,1) (2,4)&amp;lt;br&amp;gt;&lt;br /&gt;
(1,1) (2,2)&amp;lt;br&amp;gt;&lt;br /&gt;
(1,2) (2,3)&amp;lt;br&amp;gt;&lt;br /&gt;
(1,3) (2,4)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; matricein.txt&lt;br /&gt;
: 30001 4 4&lt;br /&gt;
: 0 1&lt;br /&gt;
: 1 0 0 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#3788 - Matricea&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, m, a, r, c):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 30000) or not (1 &amp;lt;= m &amp;lt;= 30000) or not (1 &amp;lt;= a &amp;lt;= 5000000):&lt;br /&gt;
        return False&lt;br /&gt;
    if len(r) != n or len(c) != m:&lt;br /&gt;
        return False&lt;br /&gt;
    if not all(bit in {0, 1} for bit in r) or not all(bit in {0, 1} for bit in c):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezolva_problema(n, m, a, r, c):&lt;br /&gt;
    if validare_date(n, m, a, r, c):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        matrice = [[0] * m for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(m):&lt;br /&gt;
                matrice[i][j] = r[i] ^ c[j]&lt;br /&gt;
&lt;br /&gt;
        max_zeros = 0&lt;br /&gt;
        numar_dreptunghiuri = 0&lt;br /&gt;
&lt;br /&gt;
        for x1 in range(n):&lt;br /&gt;
            for y1 in range(m):&lt;br /&gt;
                for x2 in range(x1, n):&lt;br /&gt;
                    for y2 in range(y1, m):&lt;br /&gt;
                        arie = (x2 - x1 + 1) * (y2 - y1 + 1)&lt;br /&gt;
                        if arie == a:&lt;br /&gt;
                            num_zeros = sum(matrice[i][j] == 0 for i in range(x1, x2 + 1) for j in range(y1, y2 + 1))&lt;br /&gt;
                            if num_zeros &amp;gt; max_zeros:&lt;br /&gt;
                                max_zeros = num_zeros&lt;br /&gt;
                                numar_dreptunghiuri = 1&lt;br /&gt;
                            elif num_zeros == max_zeros:&lt;br /&gt;
                                numar_dreptunghiuri += 1&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;matriceout.txt&amp;quot;, &amp;quot;w&amp;quot;) as f_out:&lt;br /&gt;
            f_out.write(f&amp;quot;{max_zeros} {numar_dreptunghiuri}\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;matricein.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
    n, m, a = map(int, f.readline().split())&lt;br /&gt;
    r = list(map(int, f.readline().split()))&lt;br /&gt;
    c = list(map(int, f.readline().split()))&lt;br /&gt;
&lt;br /&gt;
rezolva_problema(n, m, a, r, c)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1629_-_Qmat&amp;diff=8237</id>
		<title>1629 - Qmat</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1629_-_Qmat&amp;diff=8237"/>
		<updated>2023-12-18T11:28:03Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Spunem că două matrice a și b sunt egale dacă au același număr de linii n și același număr de coloane m și pentru orice pereche de indici i, j (1 ≤ i ≤ n, 1 ≤ j ≤ m) a[i][j] = b[i][j].  == Cerința == Se dau două seturi de N, respectiv Q matrice binare (cu valori 0 sau 1), pentru fiecare matrice fiind precizat numărul de linii respectiv de coloane. Să se afișeze numărul aparițiilor matricelor din al doilea set în primul.  == Date de intra...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Spunem că două matrice a și b sunt egale dacă au același număr de linii n și același număr de coloane m și pentru orice pereche de indici i, j (1 ≤ i ≤ n, 1 ≤ j ≤ m) a[i][j] = b[i][j].&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Se dau două seturi de N, respectiv Q matrice binare (cu valori 0 sau 1), pentru fiecare matrice fiind precizat numărul de linii respectiv de coloane. Să se afișeze numărul aparițiilor matricelor din al doilea set în primul.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare qmatin.txt conține pe prima linie numărul N, urmat de N matrice, M1, M2, … Mn. Pentru fiecare matrice Mi este precizat, pe o linie, separate printr-un spațiu, numărul de linii li, respectiv de coloane ci, iar pe următoarele li linii câte ci cifre binare separate prin câte un spațiu. După cele N matrice se află și numărul Q urmat de asemenea de Q matrice descrise la fel ca și cele anterioare.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire qmatout.txt va conține pe prima linie numărul sol, reprezentând numărul de matrice din al doilea set ce apar în primul.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n, q&#039;&#039;&#039; &amp;amp;les; 10.000&lt;br /&gt;
* pentru orice matrice dată 1 ≤ nr. de linii, nr. de coloane ≤ 10&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; qmatin.txt&lt;br /&gt;
: 5&lt;br /&gt;
: 2 6&lt;br /&gt;
: 0 0 0 1 1 1&lt;br /&gt;
: 1 0 1 1 0 0&lt;br /&gt;
: 7 4&lt;br /&gt;
: 0 0 0 1&lt;br /&gt;
: 0 0 0 0&lt;br /&gt;
: 0 1 1 0&lt;br /&gt;
: 0 1 1 0&lt;br /&gt;
: 1 1 1 1&lt;br /&gt;
: 0 1 0 0&lt;br /&gt;
: 0 1 0 1&lt;br /&gt;
: 5 1&lt;br /&gt;
: 0&lt;br /&gt;
: 0&lt;br /&gt;
: 1&lt;br /&gt;
: 0&lt;br /&gt;
: 1&lt;br /&gt;
: 3 5&lt;br /&gt;
: 0 1 1 1 1&lt;br /&gt;
: 1 1 1 0 0&lt;br /&gt;
: 0 0 1 1 0&lt;br /&gt;
: 9 2&lt;br /&gt;
: 0 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 3&lt;br /&gt;
: 3 5&lt;br /&gt;
: 0 1 1 1 1&lt;br /&gt;
: 1 1 1 0 0&lt;br /&gt;
: 0 0 1 1 0&lt;br /&gt;
: 9 2&lt;br /&gt;
: 0 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 2 3&lt;br /&gt;
: 1 1 1&lt;br /&gt;
: 1 1 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; qmatout.txt&lt;br /&gt;
: 2&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; qmatin.txt&lt;br /&gt;
: 5&lt;br /&gt;
: 2 6&lt;br /&gt;
: 2 0 0 1 1 1&lt;br /&gt;
: 1 0 1 1 0 0&lt;br /&gt;
: 7 4&lt;br /&gt;
: 0 0 0 1&lt;br /&gt;
: 0 0 0 0&lt;br /&gt;
: 0 1 1 0&lt;br /&gt;
: 0 1 1 0&lt;br /&gt;
: 1 1 1 1&lt;br /&gt;
: 0 1 0 0&lt;br /&gt;
: 0 1 0 1&lt;br /&gt;
: 5 1&lt;br /&gt;
: 0&lt;br /&gt;
: 0&lt;br /&gt;
: 1&lt;br /&gt;
: 0&lt;br /&gt;
: 1&lt;br /&gt;
: 3 5&lt;br /&gt;
: 0 1 1 1 1&lt;br /&gt;
: 1 1 1 0 0&lt;br /&gt;
: 0 0 1 1 0&lt;br /&gt;
: 9 2&lt;br /&gt;
: 0 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 3&lt;br /&gt;
: 3 5&lt;br /&gt;
: 0 1 1 1 1&lt;br /&gt;
: 1 1 1 0 0&lt;br /&gt;
: 0 0 1 1 0&lt;br /&gt;
: 9 2&lt;br /&gt;
: 0 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 2 3&lt;br /&gt;
: 1 1 1&lt;br /&gt;
: 1 1 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1629 - Qmat&lt;br /&gt;
&lt;br /&gt;
def este_matrice_valida(matrice):&lt;br /&gt;
    if len(matrice) == 0 or len(matrice[0]) == 0:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    lungime_rand = len(matrice[0])&lt;br /&gt;
    if any(len(rand) != lungime_rand for rand in matrice):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if any(element not in (0, 1) for rand in matrice for element in rand):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citeste_matrice(fisier):&lt;br /&gt;
    nr_randuri, nr_coloane = map(int, fisier.readline().split())&lt;br /&gt;
    matrice = [list(map(int, fisier.readline().split())) for _ in range(nr_randuri)]&lt;br /&gt;
    return matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numara_aparitii(set_matrice_1, set_matrice_2):&lt;br /&gt;
    numar_aparitii = 0&lt;br /&gt;
    for matrice_2 in set_matrice_2:&lt;br /&gt;
        for matrice_1 in set_matrice_1:&lt;br /&gt;
            if matrice_1 == matrice_2:&lt;br /&gt;
                numar_aparitii += 1&lt;br /&gt;
                break&lt;br /&gt;
    return numar_aparitii&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;qmatin.txt&amp;quot;, &amp;quot;r&amp;quot;) as fisier:&lt;br /&gt;
        n = int(fisier.readline())&lt;br /&gt;
        set_matrice_1 = [citeste_matrice(fisier) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
        q = int(fisier.readline())&lt;br /&gt;
        set_matrice_2 = [citeste_matrice(fisier) for _ in range(q)]&lt;br /&gt;
&lt;br /&gt;
    if all(este_matrice_valida(matrice) for set_matrice in [set_matrice_1, set_matrice_2] for matrice in set_matrice):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        rezultat = numara_aparitii(set_matrice_1, set_matrice_2)&lt;br /&gt;
        with open(&amp;quot;qmatout.txt&amp;quot;, &amp;quot;w&amp;quot;) as fisier_out:&lt;br /&gt;
            fisier_out.write(str(rezultat))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0969_-_Culori1&amp;diff=8236</id>
		<title>0969 - Culori1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0969_-_Culori1&amp;diff=8236"/>
		<updated>2023-12-18T10:35:01Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Într-o cameră sunt aşezate n*m acvarii identice, pe n rânduri, câte m pe fiecare rând, unul lângă altul. În fiecare acvariu se află un singur peşte. Peştele poate fi de culoare roşie (culoare codificată cu r) sau albastră (codificată cu a). La fiecare moment de timp t=1,2,3,.., peştii îşi modifică simultan culoarea astfel: fiecare peşte se colorează în culoarea pe care au avut-o la momentul t-1 majoritatea peştilor din acvariile învecinat...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Într-o cameră sunt aşezate n*m acvarii identice, pe n rânduri, câte m pe fiecare rând, unul lângă altul. În fiecare acvariu se află un singur peşte. Peştele poate fi de culoare roşie (culoare codificată cu r) sau albastră (codificată cu a). La fiecare moment de timp t=1,2,3,.., peştii îşi modifică simultan culoarea astfel: fiecare peşte se colorează în culoarea pe care au avut-o la momentul t-1 majoritatea peştilor din acvariile învecinate (ca în desenul de mai jos, sunt cel mult 8 acvarii vecine notate cu V1, V2, V3,…, V8). În cazul în care numărul peştilor vecini roşii este egal cu numărul peştilor vecini albaştrii, peştele studiat îşi va păstra culoarea.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieţi un program care să citească numerele naturale n, m, t şi cele n*m coduri ale culorilor peştilor (cele de la momentul iniţial t=0) şi care să determine şi să afişeze codurile culorilor peştilor de la momentul t.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare culori1in.txt conține&lt;br /&gt;
&lt;br /&gt;
* pe prima linie numerele naturale n, m şi t, separate printr-un singur spaţiu, cu semnificaţia din enunț&lt;br /&gt;
* pe următoarele n linii se află câte m caractere r sau a, pentru fiecare rând de acvarii, format astfel:&lt;br /&gt;
**dacă peştele din acvariul cu numărul de ordine i (1≤i≤m) din rândul curent este roşu, atunci cel de-al i-lea caracter din linia fişierului de intrare, corespunzătoare rândului curent, este r&lt;br /&gt;
**dacă peştele din acvariul cu numărul de ordine i (1≤i≤m) din rândul curent este albastru atunci cel de-al i-lea caracter din linia fişierului de intrare, corespunzătoare rândului curent, este a&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire culori1out.txt va conține n linii, fiecare linie va conţine câte m caractere r sau a, reprezentând codurile culorilor peştilor din rândul corespunzător numărului liniei curente din fişier.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 2 &amp;amp;les; &#039;&#039;&#039;n, m&#039;&#039;&#039; &amp;amp;les; 49&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;t&#039;&#039;&#039; &amp;amp;les; 2.300.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; culori1in.txt&lt;br /&gt;
: 3 3 1      &lt;br /&gt;
: rar&lt;br /&gt;
: rra   &lt;br /&gt;
: arr&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; culori1out.txt&lt;br /&gt;
: rra&lt;br /&gt;
: rrr&lt;br /&gt;
: rrr&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; culori1in.txt&lt;br /&gt;
: 4 5 3&lt;br /&gt;
: rrara&lt;br /&gt;
: aarra&lt;br /&gt;
: aarrr&lt;br /&gt;
: rrraa&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; culori1out.txt&lt;br /&gt;
: aarrr&lt;br /&gt;
: aarrr&lt;br /&gt;
: rrrrr&lt;br /&gt;
: rrrrr&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; culori1in.txt&lt;br /&gt;
: 1 5 3&lt;br /&gt;
: rrara&lt;br /&gt;
: aarra&lt;br /&gt;
: aarrr&lt;br /&gt;
: rrraa&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#0969 - Culori1&lt;br /&gt;
&lt;br /&gt;
def validare_date_intrare(n, m, t, culori):&lt;br /&gt;
    if not (2 &amp;lt;= n &amp;lt; 50 and 2 &amp;lt;= m &amp;lt; 50):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= t &amp;lt;= 2300000):&lt;br /&gt;
        return False&lt;br /&gt;
    if len(culori) != n:&lt;br /&gt;
        return False&lt;br /&gt;
    for linie in culori:&lt;br /&gt;
        if len(linie) != m:&lt;br /&gt;
            return False&lt;br /&gt;
        if not all(caracter in {&#039;r&#039;, &#039;a&#039;} for caracter in linie):&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def modifica_culori(n, m, t, culori):&lt;br /&gt;
    directii = [(-1, 0), (-1, 1), (0, 1), (1, 1), (1, 0), (1, -1), (0, -1), (-1, -1)]&lt;br /&gt;
&lt;br /&gt;
    def numar_vecini(x, y):&lt;br /&gt;
        vecini_rosii = 0&lt;br /&gt;
        vecini_albastri = 0&lt;br /&gt;
        for dx, dy in directii:&lt;br /&gt;
            nx, ny = x + dx, y + dy&lt;br /&gt;
            if 0 &amp;lt;= nx &amp;lt; n and 0 &amp;lt;= ny &amp;lt; m:&lt;br /&gt;
                if culori[nx][ny] == &#039;r&#039;:&lt;br /&gt;
                    vecini_rosii += 1&lt;br /&gt;
                elif culori[nx][ny] == &#039;a&#039;:&lt;br /&gt;
                    vecini_albastri += 1&lt;br /&gt;
        return vecini_rosii, vecini_albastri&lt;br /&gt;
&lt;br /&gt;
    def actualizeaza_culoare(x, y):&lt;br /&gt;
        vecini_rosii, vecini_albastri = numar_vecini(x, y)&lt;br /&gt;
        if vecini_rosii &amp;gt; vecini_albastri:&lt;br /&gt;
            return &#039;r&#039;&lt;br /&gt;
        elif vecini_rosii &amp;lt; vecini_albastri:&lt;br /&gt;
            return &#039;a&#039;&lt;br /&gt;
        else:&lt;br /&gt;
            return culori[x][y]&lt;br /&gt;
&lt;br /&gt;
    for _ in range(t):&lt;br /&gt;
        noua_culoare = [[&#039;&#039;] * m for _ in range(n)]&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(m):&lt;br /&gt;
                noua_culoare[i][j] = actualizeaza_culoare(i, j)&lt;br /&gt;
        culori = [&#039;&#039;.join(row) for row in noua_culoare]&lt;br /&gt;
&lt;br /&gt;
    return culori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;culori1in.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        n, m, t = map(int, fin.readline().split())&lt;br /&gt;
        culori = [fin.readline().strip() for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if validare_date_intrare(n, m, t, culori):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        rezultat = modifica_culori(n, m, t, culori)&lt;br /&gt;
        with open(&amp;quot;culori1out.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(&#039;\n&#039;.join(rezultat))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2451_-_Mexitate&amp;diff=8228</id>
		<title>2451 - Mexitate</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2451_-_Mexitate&amp;diff=8228"/>
		<updated>2023-12-17T19:33:54Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Se dă o matrice A cu N linii și M coloane cu elemente numere naturale nu neapărat distincte. Pentru o submatrice definim mex-ul acesteia ca fiind cea mai mică valoare naturală nenulă care nu apare în aceasta.  == Cerința == Să se calculeze produsul mex-urilor tuturor submatricelor având K linii și L coloane ale matricei A.  == Date de intrare == Fișierul de intrare mexitatein.txt conține pe prima linie patru numere naturale N, M, K şi L separate pri...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Se dă o matrice A cu N linii și M coloane cu elemente numere naturale nu neapărat distincte. Pentru o submatrice definim mex-ul acesteia ca fiind cea mai mică valoare naturală nenulă care nu apare în aceasta.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Să se calculeze produsul mex-urilor tuturor submatricelor având K linii și L coloane ale matricei A.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare mexitatein.txt conține pe prima linie patru numere naturale N, M, K şi L separate printr-un spaţiu cu semnificația din enunț. Pe fiecare dintre următoarele N linii se află câte M numere naturale nenule, despărțite prin câte un spațiu, reprezentând valorile matricei.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire mexitateout.txt va conține un singur număr natural reprezentând produsul mex-urilor tuturor submatricelor având K linii și L coloane ale matricei modulo 1 000 000 007.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;N * M&#039;&#039;&#039; &amp;amp;les; 400.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;K&#039;&#039;&#039; &amp;amp;les; N&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;L&#039;&#039;&#039; &amp;amp;les; M&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;A[i][j]&#039;&#039;&#039; &amp;amp;les; N * M, 1 &amp;amp;les; &#039;&#039;&#039;i&#039;&#039;&#039; &amp;amp;les; N, 1 &amp;amp;les; &#039;&#039;&#039;J&#039;&#039;&#039; &amp;amp;les; M&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; mexitatein.txt&lt;br /&gt;
: 3 4 2 3&lt;br /&gt;
: 1 2 3 2&lt;br /&gt;
: 2 3 1 4&lt;br /&gt;
: 1 1 2 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; mexitateout.txt&lt;br /&gt;
: 400&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
N = 3, M = 4, K = 2 și L = 3&amp;lt;br&amp;gt;&lt;br /&gt;
Submatricile cu două linii și trei coloane sunt:&amp;lt;br&amp;gt;&lt;br /&gt;
1 2 3 cu mex-ul 4&amp;lt;br&amp;gt;&lt;br /&gt;
2 3 1&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 3 2 cu mex-ul 5&amp;lt;br&amp;gt;&lt;br /&gt;
3 1 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2 3 1 cu mex-ul 4&amp;lt;br&amp;gt;&lt;br /&gt;
1 1 2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
3 1 4 cu mex-ul 5&amp;lt;br&amp;gt;&lt;br /&gt;
1 2 6&lt;br /&gt;
&lt;br /&gt;
Produsul tuturor mex-urilor este: 4 * 5 * 4 * 5 = 400&amp;lt;br&amp;gt;&lt;br /&gt;
400 % 1 000 000 007 = 400&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; mexitatein.txt&lt;br /&gt;
: 3 4 4 3&lt;br /&gt;
: 1 2 3 2&lt;br /&gt;
: 2 3 1 4&lt;br /&gt;
: 1 1 2 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#2451 - Mexitate&lt;br /&gt;
&lt;br /&gt;
MOD = 1000000007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, m, nr_linii, nr_coloane, matrice):&lt;br /&gt;
    if not (1 &amp;lt;= n * m &amp;lt;= 400000 and 1 &amp;lt;= nr_linii &amp;lt;= n and 1 &amp;lt;= nr_coloane &amp;lt;= m):&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            if not (1 &amp;lt;= matrice[i][j] &amp;lt;= n * m):&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def mex(n, m, nr_linii, nr_coloane, matrice):&lt;br /&gt;
    result = 1&lt;br /&gt;
    for i in range(n - nr_linii + 1):&lt;br /&gt;
        for j in range(m - nr_coloane + 1):&lt;br /&gt;
            submatrice = [linie[j:j+nr_coloane] for linie in matrice[i:i+nr_linii]]&lt;br /&gt;
            valori = set()&lt;br /&gt;
            for linie in submatrice:&lt;br /&gt;
                valori.update(linie)&lt;br /&gt;
            mex = 1&lt;br /&gt;
            while mex in valori:&lt;br /&gt;
                mex += 1&lt;br /&gt;
            result = (result * mex) % MOD&lt;br /&gt;
    return result&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;mexitatein.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        n, m, nr_linii, nr_coloane = map(int, fin.readline().split())&lt;br /&gt;
        matrice = [list(map(int, fin.readline().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n, m, nr_linii, nr_coloane, matrice):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        result = mex(n, m, nr_linii, nr_coloane, matrice)&lt;br /&gt;
        with open(&amp;quot;mexitateout.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(str(result))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3290_-_Mat_D3&amp;diff=8227</id>
		<title>3290 - Mat D3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3290_-_Mat_D3&amp;diff=8227"/>
		<updated>2023-12-17T19:09:09Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Fie o matrice cu L linii și C coloane care memorează numere naturale. O submatrice a sa având colțul stânga-sus (xs, ys) și colțul dreapta-jos (xd, yd) este formată din toate elementele din matrice având indicele liniei în intervalul [xs, xd] și indicele coloanei în intervalul [ys, yd]. O submatrice poate fi formată dintr-un singur element.  == Cerința == Scrieți un program care determină numărul submatricelor care au suma elementelor divizibilă...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Fie o matrice cu L linii și C coloane care memorează numere naturale. O submatrice a sa având colțul stânga-sus (xs, ys) și colțul dreapta-jos (xd, yd) este formată din toate elementele din matrice având indicele liniei în intervalul [xs, xd] și indicele coloanei în intervalul [ys, yd]. O submatrice poate fi formată dintr-un singur element.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieți un program care determină numărul submatricelor care au suma elementelor divizibilă cu 3.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare matd3in.txt conține pe prima linie numerele naturale L și C separate prin spațiu. Pe următoarele L linii se află câte C numere naturale separate prin câte un spațiu reprezentând câte o linie din matrice.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire matd3out.txt va conține pe prima linie un singur număr natural K, reprezentând numărul submatricelor care au suma divizibilă cu 3.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 2 &amp;amp;les; &#039;&#039;&#039;L, C&#039;&#039;&#039; &amp;amp;les; 300&lt;br /&gt;
* elementele matricei sunt numere naturale cuprinse între 0 și 10.000&lt;br /&gt;
* numărul 0 este divizibil cu 3&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; matd3in.txt&lt;br /&gt;
: 2 3&lt;br /&gt;
: 1 2 2&lt;br /&gt;
: 2 1 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; matd3out.txt&lt;br /&gt;
: 7&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Cele șapte submatrice sunt:&lt;br /&gt;
&lt;br /&gt;
(1 2) &amp;lt;br&amp;gt;&lt;br /&gt;
(2 1) &amp;lt;br&amp;gt;&lt;br /&gt;
(2 1 3)&amp;lt;br&amp;gt;&lt;br /&gt;
(3)&amp;lt;br&amp;gt;&lt;br /&gt;
(1&amp;lt;br&amp;gt;2) &amp;lt;br&amp;gt;&lt;br /&gt;
(2&amp;lt;br&amp;gt;1)&amp;lt;br&amp;gt;&lt;br /&gt;
(1 2&amp;lt;br&amp;gt;2 1)&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; matd3in.txt&lt;br /&gt;
: 1 3&lt;br /&gt;
: 1 2 2&lt;br /&gt;
: 2 1 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#3290 - Matd3&lt;br /&gt;
&lt;br /&gt;
def validare_date(linii, coloane, matrice):&lt;br /&gt;
    if not (2 &amp;lt;= linii &amp;lt;= 300 and 2 &amp;lt;= coloane &amp;lt;= 300):&lt;br /&gt;
        return False&lt;br /&gt;
    for randuri in matrice:&lt;br /&gt;
        if len(randuri) != coloane or any(not (0 &amp;lt;= numere &amp;lt;= 10000) for numere in randuri):&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numarare_submatrici(linii, coloane, matrice):&lt;br /&gt;
    count = 0&lt;br /&gt;
    for xs in range(linii):&lt;br /&gt;
        for ys in range(coloane):&lt;br /&gt;
            for xd in range(xs, linii):&lt;br /&gt;
                for yd in range(ys, coloane):&lt;br /&gt;
                    submatrice_sum = sum(matrice[i][j] for i in range(xs, xd + 1) for j in range(ys, yd + 1))&lt;br /&gt;
                    if submatrice_sum % 3 == 0:&lt;br /&gt;
                        count += 1&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;matd3in.txt&amp;quot;, &amp;quot;r&amp;quot;) as file:&lt;br /&gt;
        linii, coloane = map(int, file.readline().split())&lt;br /&gt;
        matrice = [list(map(int, line.split())) for line in file]&lt;br /&gt;
&lt;br /&gt;
    if validare_date(linii, coloane, matrice):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        result = numarare_submatrici(linii, coloane, matrice)&lt;br /&gt;
        with open(&amp;quot;matd3out.txt&amp;quot;, &amp;quot;w&amp;quot;) as file_out:&lt;br /&gt;
            file_out.write(str(result))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1209_-_T_Drept&amp;diff=8226</id>
		<title>1209 - T Drept</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1209_-_T_Drept&amp;diff=8226"/>
		<updated>2023-12-17T17:51:48Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Se consideră N puncte de coordonate întregi în sistemul de coordonate cartezian.  == Cerința == Scrieţi un program care determină numărul de triunghiuri dreptunghice având vârfurile plasate în 3 dintre punctele date şi catetele respectiv paralele cu axele de coordonate.  == Date de intrare == Fișierul de intrare tdreptin.txt conține pe prima linie numărul natural N, care reprezintă numărul de puncte. Pe următoarele N linii se află câte două nu...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Se consideră N puncte de coordonate întregi în sistemul de coordonate cartezian.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieţi un program care determină numărul de triunghiuri dreptunghice având vârfurile plasate în 3 dintre punctele date şi catetele respectiv paralele cu axele de coordonate.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare tdreptin.txt conține pe prima linie numărul natural N, care reprezintă numărul de puncte. Pe următoarele N linii se află câte două numere naturale x y, separate prin spaţiu, reprezentând coordonatele carteziene ale celor N puncte (abscisa şi ordonata).&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire tdreptout.txt va conține o singură linie pe care va fi scris un număr natural reprezentând numărul de triunghiuri dreptunghice care respectă condiţiile din enunţ. Deoarece numărul de soluţii poate fi foarte mare, rezultatul va fi afişat modulo 666013 (adică restul împărţirii rezultatului la 666013).&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 3 &amp;amp;les; &#039;&#039;&#039;N&#039;&#039;&#039; &amp;amp;les; 100.000&lt;br /&gt;
* 0 &amp;amp;les; &#039;&#039;&#039;x, y&#039;&#039;&#039; &amp;amp;les; 100.000&lt;br /&gt;
* Cele N puncte din fişierul de intrare sunt distincte două câte două.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; tdreptin.txt&lt;br /&gt;
: 8&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 4&lt;br /&gt;
: 10 8&lt;br /&gt;
: 4 1&lt;br /&gt;
: 9 1&lt;br /&gt;
: 5 5&lt;br /&gt;
: 7 4&lt;br /&gt;
: 7 5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; tdreptout.txt&lt;br /&gt;
: 5&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Triunghiurile dreptunghice formate sunt:&lt;br /&gt;
&lt;br /&gt;
(1,1) (1,4) (4,1) &amp;lt;br&amp;gt;&lt;br /&gt;
(1,1) (9,1) (1,4) &amp;lt;br&amp;gt;&lt;br /&gt;
(5,5) (7,4) (7,5) &amp;lt;br&amp;gt;&lt;br /&gt;
(1,4) (7,4) (7,5) &amp;lt;br&amp;gt;&lt;br /&gt;
(1,1) (1,4) (7,4) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; tdreptin.txt&lt;br /&gt;
: 2&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1209 - TDrept&lt;br /&gt;
&lt;br /&gt;
def validare_date(x, y):&lt;br /&gt;
    return 3 &amp;lt;= len(x) &amp;lt;= 100000 and all(0 &amp;lt;= xi &amp;lt;= 100000 and 0 &amp;lt;= yi &amp;lt;= 100000 for xi, yi in zip(x, y))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_triunghiuri_dreptunghice(x, y):&lt;br /&gt;
    n = len(x)&lt;br /&gt;
    rezultat = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(i + 1, n):&lt;br /&gt;
            for k in range(j + 1, n):&lt;br /&gt;
                if (x[i] == x[j] or x[j] == x[k] or x[i] == x[k]) and \&lt;br /&gt;
                   (y[i] == y[j] or y[j] == y[k] or y[i] == y[k]):&lt;br /&gt;
                    rezultat += 1&lt;br /&gt;
    return rezultat % 666013&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citire_date():&lt;br /&gt;
    with open(&amp;quot;tdreptin.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline().strip())&lt;br /&gt;
        x = []&lt;br /&gt;
        y = []&lt;br /&gt;
        for _ in range(n):&lt;br /&gt;
            xi, yi = map(int, f.readline().split())&lt;br /&gt;
            x.append(xi)&lt;br /&gt;
            y.append(yi)&lt;br /&gt;
    return n, x, y&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def scrie_rezultat(rezultat):&lt;br /&gt;
    with open(&amp;quot;tdreptout.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        f.write(str(rezultat))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n, x, y = citire_date()&lt;br /&gt;
&lt;br /&gt;
    if validare_date(x, y):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        rezultat = numar_triunghiuri_dreptunghice(x, y)&lt;br /&gt;
        scrie_rezultat(rezultat)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1637_-_Split&amp;diff=8225</id>
		<title>1637 - Split</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1637_-_Split&amp;diff=8225"/>
		<updated>2023-12-17T17:32:28Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Fie un şir a1,a2,…,an de numere naturale. Se împarte şirul în patru secvenţe astfel încât orice element din şir să aparţină unei singure secvenţe şi fiecare secvenţă să conţină cel puţin două elemente. Mai exact, se identifică trei indici i &amp;lt; j &amp;lt; k astfel încât prima secvenţă este formată din elementele a1,a2,…,ai, a doua din elementele ai+1,ai+2,…,aj, a treia din elementele aj+1,aj+2,…,ak şi ultima din elementele ak+1,ak+2,…,...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Fie un şir a1,a2,…,an de numere naturale. Se împarte şirul în patru secvenţe astfel încât orice element din şir să aparţină unei singure secvenţe şi fiecare secvenţă să conţină cel puţin două elemente. Mai exact, se identifică trei indici i &amp;lt; j &amp;lt; k astfel încât prima secvenţă este formată din elementele a1,a2,…,ai, a doua din elementele ai+1,ai+2,…,aj, a treia din elementele aj+1,aj+2,…,ak şi ultima din elementele ak+1,ak+2,…,an. Pentru fiecare secvenţă se determină costul ei ca fiind diferenţa dintre valoarea maximă şi cea minimă din acea secvenţă.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Să se determine o împărţire a şirului în patru secvenţe astfel încât suma costurilor celor patru secvenţe să fie maximă.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare splitin.txt conţine pe prima linie numărul natural N. Pe linia a doua se găsesc N numere naturale, separate prin câte un spaţiu, reprezentând elementele şirului a.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire splitout.txt conţine pe prima linie un singur număr natural reprezentând suma maximă a costurilor celor patru secvenţe. Pe linia a doua se află trei numere naturale i, j şi k, separate prin câte un spaţiu, cu semnificaţia din enunţ.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 8 &amp;amp;les; &#039;&#039;&#039;N&#039;&#039;&#039; &amp;amp;les; 5.000&lt;br /&gt;
* 0 &amp;amp;les; &#039;&#039;&#039;Ai&#039;&#039;&#039; &amp;amp;les; 100.000.000&lt;br /&gt;
* O secvenţă poate avea costul 0 (valoarea maximă egală cu valoarea minimă)&lt;br /&gt;
* Dacă există mai multe soluţii cu aceeaşi sumă maximă, atunci se va alege soluţia cu i minim. Dacă există mai multe soluții cu acelaşi i minim, se alege aceea cu j minim, iar dacă există mai multe soluții cu acelaşi i și j minim, se alege aceea cu k minim.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; splitin.txt&lt;br /&gt;
: 11&lt;br /&gt;
: 9 7 3 0 2 1 8 6 0 11 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; splitout.txt&lt;br /&gt;
: 29&lt;br /&gt;
: 4 7 9&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Cele 4 secvențe sunt: 9 7 3 0 (cost 9 - 0 = 9) &amp;lt;br&amp;gt;&lt;br /&gt;
2 1 8 (cost 8 - 1 = 7) &amp;lt;br&amp;gt;&lt;br /&gt;
6 0 (cost 6 - 0 = 6) &amp;lt;br&amp;gt;&lt;br /&gt;
11 4 (cost 11 - 4 = 7). &amp;lt;br&amp;gt;&lt;br /&gt;
O altă soluţie care obţine tot suma maximă 29 este 5 7 9, dar nu are i minim.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; splitin.txt&lt;br /&gt;
: 5&lt;br /&gt;
: 9 7 3 0 2&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1637 - Split&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, sir):&lt;br /&gt;
    if not (8 &amp;lt;= n &amp;lt;= 5000):&lt;br /&gt;
        return False&lt;br /&gt;
    if len(sir) != n:&lt;br /&gt;
        return False&lt;br /&gt;
    for elem in sir:&lt;br /&gt;
        if not (0 &amp;lt;= elem &amp;lt;= 100000000):&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def maximizeaza_suma(n, sir):&lt;br /&gt;
    suma_maxima = float(&#039;-inf&#039;)&lt;br /&gt;
    rezultat = (0, 0, 0)&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n - 1):&lt;br /&gt;
        for j in range(i + 1, n):&lt;br /&gt;
            for k in range(j + 1, n + 1):&lt;br /&gt;
                secventa1 = sir[:i]&lt;br /&gt;
                secventa2 = sir[i:j]&lt;br /&gt;
                secventa3 = sir[j:k]&lt;br /&gt;
                secventa4 = sir[k:]&lt;br /&gt;
&lt;br /&gt;
                if not secventa1 or not secventa2 or not secventa3 or not secventa4:&lt;br /&gt;
                    continue&lt;br /&gt;
&lt;br /&gt;
                cost1 = max(secventa1) - min(secventa1)&lt;br /&gt;
                cost2 = max(secventa2) - min(secventa2)&lt;br /&gt;
                cost3 = max(secventa3) - min(secventa3)&lt;br /&gt;
                cost4 = max(secventa4) - min(secventa4)&lt;br /&gt;
&lt;br /&gt;
                suma_curenta = cost1 + cost2 + cost3 + cost4&lt;br /&gt;
&lt;br /&gt;
                if suma_curenta &amp;gt; suma_maxima:&lt;br /&gt;
                    suma_maxima = suma_curenta&lt;br /&gt;
                    rezultat = (i, j, k)&lt;br /&gt;
&lt;br /&gt;
    return suma_maxima, rezultat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;splitin.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
    n = int(f.readline().strip())&lt;br /&gt;
    sir = list(map(int, f.readline().split()))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if validare_date(n, sir):&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    rezultat_suma, rezultat_secvente = maximizeaza_suma(n, sir)&lt;br /&gt;
    with open(&amp;quot;splitout.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
        g.write(str(rezultat_suma) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        g.write(&amp;quot; &amp;quot;.join(map(str, rezultat_secvente)))&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    exit(0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1695_-_Oglinda&amp;diff=8224</id>
		<title>1695 - Oglinda</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1695_-_Oglinda&amp;diff=8224"/>
		<updated>2023-12-17T16:45:58Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Pentru un număr natural N se consideră șirul a=(1,2,3...,N), deci a[i]=i pentru orice i, 1≤i≤N.  Asupra acestui șir se pot aplica operații de două tipuri:  a) la operația de tipul 1 se specifică două valori i și j, cu 1≤i≤j≤N. Efectul acestei operații asupra șirului este de oglindire a secvenței din șir care începe cu elementul de pe poziția i și se termină cu cel de pe poziția j. De exemplu, dacă în șirul a=(1,2,3,4,5,6,7) se apli...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Pentru un număr natural N se consideră șirul a=(1,2,3...,N), deci a[i]=i pentru orice i, 1≤i≤N.&lt;br /&gt;
&lt;br /&gt;
Asupra acestui șir se pot aplica operații de două tipuri:&lt;br /&gt;
&lt;br /&gt;
a) la operația de tipul 1 se specifică două valori i și j, cu 1≤i≤j≤N. Efectul acestei operații asupra șirului este de oglindire a secvenței din șir care începe cu elementul de pe poziția i și se termină cu cel de pe poziția j. De exemplu, dacă în șirul a=(1,2,3,4,5,6,7) se aplică operația 3 6, atunci șirul devine a=(1,2,6,5,4,3,7). Iar în șirul a=(1,4,3,2,5,6,7), dacă se aplică operația 4 6, atunci a=(1,4,3,6,5,2,7).&amp;lt;br&amp;gt;&lt;br /&gt;
b) Operația de tipul 2 conține un indice i, 1≤i≤N, și cere să afișăm valoarea elementului care se află în acel moment pe poziția i în șir.&lt;br /&gt;
&lt;br /&gt;
Se consideră M astfel de operații într-o ordine dată.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieți un program care să determine și să afișeze rezultatul pentru fiecare operație de tipul 2.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare oglindain.txt conține pe prima linie două numere naturale N și M, separate printr-un spațiu. Pe fiecare dintre următoarele M linii este specificată câte o operație de tipul 1 sau 2. O linie poate să conțină două sau trei numere, astfel: 1 i j (indicând o operație de tipul 1) respectiv 2 i (indicând o operație de tip 2). Valorile de pe aceeași linie sunt separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire oglindaout.txt va conține un număr de linii egal cu numărul de operații de tipul 2 care sunt definite în fișierul de intrare. Pe fiecare linie este afișat câte un număr natural reprezintând rezultatul pentru o operație de tip 2 prezentă în fișierul de intrare, în ordinea în care acestea sunt definite.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;N&#039;&#039;&#039; &amp;amp;les; 1.000.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;M&#039;&#039;&#039; &amp;amp;les; 2.000&lt;br /&gt;
* Se garantează că 1 ≤ i ≤ j ≤ N la operațiile de tipul 1 și că 1 ≤ i ≤ N la operațiile de tip 2.&lt;br /&gt;
* Se garantează că există cel puțin o operație de tipul 2.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; oglindain.txt&lt;br /&gt;
: 10 4&lt;br /&gt;
: 2 3&lt;br /&gt;
: 1 2 7&lt;br /&gt;
: 2 3&lt;br /&gt;
: 2 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; oglindaout.txt&lt;br /&gt;
: 3&lt;br /&gt;
: 6&lt;br /&gt;
: 1&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Șirul inițial este: 1 2 3 4 5 6 7 8 9 10 &amp;lt;br&amp;gt;&lt;br /&gt;
Rezultatul operației 2 3 are ca efect afișarea elementului de pe poziția 3 (care este chiar 3).&amp;lt;br&amp;gt;&lt;br /&gt;
Rezultatul operației 1 2 7 are ca efect transformarea șirului în: &amp;lt;br&amp;gt;&lt;br /&gt;
1 7 6 5 4 3 2 8 9 10.&amp;lt;br&amp;gt;&lt;br /&gt;
Rezultatul operației 2 3 are ca efect afișarea elementului de pe poziția 3 (care acum este 6).&amp;lt;br&amp;gt;&lt;br /&gt;
Rezultatul operației 2 1 are ca efect afișarea elementului de pe poziția 1 (care acum are valoarea 1).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; oglindain.txt&lt;br /&gt;
: 10 2023&lt;br /&gt;
: 2 3&lt;br /&gt;
: 1 2 7&lt;br /&gt;
: 2 3&lt;br /&gt;
: 2 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1695 - Oglinda&lt;br /&gt;
&lt;br /&gt;
def oglinda(n, operatii):&lt;br /&gt;
    sir = list(range(1, n + 1))&lt;br /&gt;
    rezultate = []&lt;br /&gt;
    for operatie in operatii:&lt;br /&gt;
        tip = operatie[0]&lt;br /&gt;
        if tip == 1:&lt;br /&gt;
            i, j = operatie[1], operatie[2]&lt;br /&gt;
            sir[i - 1:j] = reversed(sir[i - 1:j])&lt;br /&gt;
        elif tip == 2:&lt;br /&gt;
            i = operatie[1]&lt;br /&gt;
            rezultate.append(sir[i - 1])&lt;br /&gt;
    with open(&amp;quot;oglindaout.txt&amp;quot;, &amp;quot;w&amp;quot;) as output_file:&lt;br /&gt;
        for rezultat in rezultate:&lt;br /&gt;
            output_file.write(str(rezultat) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, m, operatii):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= m &amp;lt;= 2000):&lt;br /&gt;
        return False&lt;br /&gt;
    for operatie in operatii:&lt;br /&gt;
        tip = operatie[0]&lt;br /&gt;
        if tip == 1:&lt;br /&gt;
            i, j = operatie[1], operatie[2]&lt;br /&gt;
            if not (1 &amp;lt;= i &amp;lt;= j &amp;lt;= n):&lt;br /&gt;
                return False&lt;br /&gt;
        elif tip == 2:&lt;br /&gt;
            i = operatie[1]&lt;br /&gt;
            if not (1 &amp;lt;= i &amp;lt;= n):&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;oglindain.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n, m = map(int, f.readline().split())&lt;br /&gt;
        operatii = [list(map(int, line.split())) for line in f]&lt;br /&gt;
    if validare_date(n, m, operatii):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        oglinda(n, operatii)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1474_-_Exponent&amp;diff=8223</id>
		<title>1474 - Exponent</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1474_-_Exponent&amp;diff=8223"/>
		<updated>2023-12-17T16:13:19Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Softescu a învăţat azi la şcoală, la ora de informatică algoritmul determinării exponentului unui număr natural prim p în descompunerea în factori primi a lui n!. Softescu s-a gândit că ar fi interesant dacă ar putea să elaboreze un algoritm care să determine exponentul unui număr natural oarecare, a (a&amp;gt;1) în descompunerea în factori primi a lui n!.  == Cerința == Dându-se două numere naturale n şi a, nenule, se cere să se determine exponen...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Softescu a învăţat azi la şcoală, la ora de informatică algoritmul determinării exponentului unui număr natural prim p în descompunerea în factori primi a lui n!.&lt;br /&gt;
Softescu s-a gândit că ar fi interesant dacă ar putea să elaboreze un algoritm care să determine exponentul unui număr natural oarecare, a (a&amp;gt;1) în descompunerea în factori primi a lui n!.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Dându-se două numere naturale n şi a, nenule, se cere să se determine exponentul numărului natural a în descompunerea lui n!.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare exponentin.txt conţine pe prima linie două numere naturale, nenule, n a separate printr-un spațiu.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieşire exponentout.txt va conţine pe prima linie un număr natural e, reprezentând exponentul numărului natural a în descompunerea în factori primi a lui n!&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 2 &amp;amp;les; &#039;&#039;&#039;n, a&#039;&#039;&#039; &amp;amp;les; 1000&lt;br /&gt;
* exponentul unui număr natural nenul x, nu neapărat prim, în descompunerea unui număr natural nenul y este cel mai mare număr natural e cu proprietatea că xe este divizor al lui y.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; exponentin.txt&lt;br /&gt;
: 6 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; exponentout.txt&lt;br /&gt;
: 2&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
6!=1*2*3*4*5*6 = 1*3*3*4*4*5.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; exponentin.txt&lt;br /&gt;
: 1 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1474 - Exponent&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, a):&lt;br /&gt;
    if not (2 &amp;lt;= n &amp;lt;= 1000 and 2 &amp;lt;= a &amp;lt;= 1000):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def exponent_in_descompunere(n, a):&lt;br /&gt;
    if validare_date(n, a):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        def calculeaza_exponent(prima_putere, numar):&lt;br /&gt;
            exponent = 0&lt;br /&gt;
            while numar % prima_putere == 0:&lt;br /&gt;
                exponent += 1&lt;br /&gt;
                numar //= prima_putere&lt;br /&gt;
            return exponent&lt;br /&gt;
        factorial_n = 1&lt;br /&gt;
        for i in range(2, n + 1):&lt;br /&gt;
            factorial_n *= i&lt;br /&gt;
        exponent_a = calculeaza_exponent(a, factorial_n)&lt;br /&gt;
        return exponent_a&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;exponentin.txt&amp;quot;, &amp;quot;r&amp;quot;) as file:&lt;br /&gt;
    n, a = map(int, file.readline().split())&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;exponentout.txt&amp;quot;, &amp;quot;w&amp;quot;) as file:&lt;br /&gt;
    exponent_a = exponent_in_descompunere(n, a)&lt;br /&gt;
    file.write(str(exponent_a))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0261_-_Intervale&amp;diff=8222</id>
		<title>0261 - Intervale</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0261_-_Intervale&amp;diff=8222"/>
		<updated>2023-12-17T15:55:13Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Cerința == Se dau n intervale [a,b], unde a şi b sunt numere întregi. Să se afişeze acele intervale care au proprietatea că intersecţia lor cu oricare dintre celelalte n-1 intervale este mulţimea vidă  == Date de intrare == Fişierul de intrare intervalein.txt conţine pe prima linie numărul n, iar pe următoarele n linii câte două numere întregi, separate prin spaţii, reprezentând capetele unui interval.  == Date de ieșire == Fişierul de ieşire intervale...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Se dau n intervale [a,b], unde a şi b sunt numere întregi. Să se afişeze acele intervale care au proprietatea că intersecţia lor cu oricare dintre celelalte n-1 intervale este mulţimea vidă&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare intervalein.txt conţine pe prima linie numărul n, iar pe următoarele n linii câte două numere întregi, separate prin spaţii, reprezentând capetele unui interval.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieşire intervaleout.txt va conţine pe prima linie numărul k, reprezentând numărul de intervale care au proprietatea de mai sus. Urmează k linii, fiecare conţinând câte două numere întregi – capetele intervalelor determinate. Intervalele se vor afişa în ordinea în care au fost date în fişierul de intrare.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 100&lt;br /&gt;
* pentru fiecare interval dat [a,b], -30.000 &amp;amp;les; &#039;&#039;&#039;a, b&#039;&#039;&#039; &amp;amp;les; 30.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; intervalein.txt&lt;br /&gt;
: 4&lt;br /&gt;
: 8 16 &lt;br /&gt;
: 17 20&lt;br /&gt;
: 2 6&lt;br /&gt;
: 10 15&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; intervaleout.txt&lt;br /&gt;
: 2&lt;br /&gt;
: 17 20&lt;br /&gt;
: 2 6&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; intervalein.txt&lt;br /&gt;
: 101&lt;br /&gt;
: 8 16 &lt;br /&gt;
: 17 20&lt;br /&gt;
: 2 6&lt;br /&gt;
: 10 15&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#0261 - Intervale&lt;br /&gt;
&lt;br /&gt;
def valideaza_date_intrare(n, intervale):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 100):&lt;br /&gt;
        return False&lt;br /&gt;
    for a, b in intervale:&lt;br /&gt;
        if not (-30000 &amp;lt;= a &amp;lt;= 30000 and -30000 &amp;lt;= b &amp;lt;= 30000):&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def gaseste_intervale_disjuncte(n, intervale):&lt;br /&gt;
    intervale_disjuncte = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        interval_curent = intervale[i]&lt;br /&gt;
        este_disjunct = True&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if i != j:&lt;br /&gt;
                alt_interval = intervale[j]&lt;br /&gt;
                if not (interval_curent[1] &amp;lt; alt_interval[0] or interval_curent[0] &amp;gt; alt_interval[1]):&lt;br /&gt;
                    este_disjunct = False&lt;br /&gt;
                    break&lt;br /&gt;
        if este_disjunct:&lt;br /&gt;
            intervale_disjuncte.append(interval_curent)&lt;br /&gt;
    return intervale_disjuncte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def scrie_fisier_iesire(intervale_disjuncte):&lt;br /&gt;
    with open(&amp;quot;intervaleout.txt&amp;quot;, &amp;quot;w&amp;quot;) as fisier_iesire:&lt;br /&gt;
        k = len(intervale_disjuncte)&lt;br /&gt;
        fisier_iesire.write(str(k) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        for interval in intervale_disjuncte:&lt;br /&gt;
            fisier_iesire.write(&amp;quot; &amp;quot;.join(map(str, interval)) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;intervalein.txt&amp;quot;, &amp;quot;r&amp;quot;) as fisier_intrare:&lt;br /&gt;
        n = int(fisier_intrare.readline())&lt;br /&gt;
        intervale = [tuple(map(int, fisier_intrare.readline().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if valideaza_date_intrare(n, intervale):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        intervale_disjuncte = gaseste_intervale_disjuncte(n, intervale)&lt;br /&gt;
        scrie_fisier_iesire(intervale_disjuncte)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0663_-_Lungime_1&amp;diff=8214</id>
		<title>0663 - Lungime 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0663_-_Lungime_1&amp;diff=8214"/>
		<updated>2023-12-17T12:16:31Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Cerința == Se dă un șir cu n elemente, numere naturale nenule, în care cel puţin un element se repetă. Să se determine lungimea maximă a unei secvenţe de elemente din şir, cu proprietatea că primul şi ultimul element din secvenţă au aceeaşi valoare.  == Date de intrare == Fişierul de intrare lungime1in.txt conţine pe prima linie numărul n; urmează n numere naturale separate prin spaţii, reprezentând elementele şirului, ce pot fi dispuse pe mai multe l...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Se dă un șir cu n elemente, numere naturale nenule, în care cel puţin un element se repetă. Să se determine lungimea maximă a unei secvenţe de elemente din şir, cu proprietatea că primul şi ultimul element din secvenţă au aceeaşi valoare.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare lungime1in.txt conţine pe prima linie numărul n; urmează n numere naturale separate prin spaţii, reprezentând elementele şirului, ce pot fi dispuse pe mai multe linii.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieşire lungime1out.txt va conţine pe prima linie numărul L, reprezentând lungimea maximă determinată.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 100.000&lt;br /&gt;
* elementele șirului sunt numere naturale nenule mai mici sau egale cu 100.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; lungime1in.txt&lt;br /&gt;
: 12&lt;br /&gt;
: 2 13 10 5 10 12 6 7 5 10 12 8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; lungime1out.txt&lt;br /&gt;
: 8&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Cea mai lungă secvenţă de elemente în care primul şi ultimul element sunt egale este 10 5 10 12 6 7 5 10, şi are lungimea 8.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; lungimein.txt&lt;br /&gt;
: 100001&lt;br /&gt;
: 2 13 10 5 10 12 6 7 5 10 12 8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#0663 - Lungime1&lt;br /&gt;
&lt;br /&gt;
def validare_date_intrare(n, sir):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 100000:&lt;br /&gt;
        return False&lt;br /&gt;
    if len(sir) != n:&lt;br /&gt;
        return False&lt;br /&gt;
    for numar in sir:&lt;br /&gt;
        if not 1 &amp;lt;= numar &amp;lt;= 99:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def lungime_maxima_secventa(n, sir):&lt;br /&gt;
    if validare_date_intrare(n, sir):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        lungime_maxima = 0&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(i, n):&lt;br /&gt;
                if sir[i] == sir[j]:&lt;br /&gt;
                    lungime_curenta = j - i + 1&lt;br /&gt;
                    if lungime_curenta &amp;gt; lungime_maxima:&lt;br /&gt;
                        lungime_maxima = lungime_curenta&lt;br /&gt;
        with open(&amp;quot;lungime1out.txt&amp;quot;, &amp;quot;w&amp;quot;) as out_file:&lt;br /&gt;
            out_file.write(str(lungime_maxima) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;lungime1in.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        sir = list(map(int, f.readline().split()))&lt;br /&gt;
    lungime_maxima_secventa(n, sir)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0260_-_Lungime&amp;diff=8212</id>
		<title>0260 - Lungime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0260_-_Lungime&amp;diff=8212"/>
		<updated>2023-12-17T12:08:47Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Cerința == Se dă un sir cu n elemente, numere naturale nenule cu cel mult 2 cifre fiecare, în care cel puţin un element se repetă. Să se determine lungimea maximă a unei secvenţe de elemente din şir, cu proprietatea că primul şi ultimul element din secvenţă au aceeaşi valoare.  == Date de intrare == Fişierul de intrare lungimein.txt conţine pe prima linie numărul n; urmează n numere naturale separate prin spaţii, reprezentând elementele şirului, ce pot...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Se dă un sir cu n elemente, numere naturale nenule cu cel mult 2 cifre fiecare, în care cel puţin un element se repetă. Să se determine lungimea maximă a unei secvenţe de elemente din şir, cu proprietatea că primul şi ultimul element din secvenţă au aceeaşi valoare.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare lungimein.txt conţine pe prima linie numărul n; urmează n numere naturale separate prin spaţii, reprezentând elementele şirului, ce pot fi dispuse pe mai multe linii.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieşire lungimeout.txt va conţine pe prima linie numărul L, reprezentând lungimea maximă determinată.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 100.000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; lungimein.txt&lt;br /&gt;
: 12&lt;br /&gt;
: 2 13 10 5 10 12 6 7 5 10 12 8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; lungimeout.txt&lt;br /&gt;
: 8&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Cea mai lungă secvenţă de elemente în care primul şi ultimul element sunt egale este 10 5 10 12 6 7 5 10, şi are lungimea 8.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; lungimein.txt&lt;br /&gt;
: 100001&lt;br /&gt;
: 2 13 10 5 10 12 6 7 5 10 12 8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#0260 - Lungime&lt;br /&gt;
&lt;br /&gt;
def validare_date_intrare(n, sir):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 100000:&lt;br /&gt;
        return False&lt;br /&gt;
    if len(sir) != n:&lt;br /&gt;
        return False&lt;br /&gt;
    for numar in sir:&lt;br /&gt;
        if not 1 &amp;lt;= numar &amp;lt;= 99:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def lungime_maxima_secventa(n, sir):&lt;br /&gt;
    if validare_date_intrare(n, sir):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        lungime_maxima = 0&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(i, n):&lt;br /&gt;
                if sir[i] == sir[j]:&lt;br /&gt;
                    lungime_curenta = j - i + 1&lt;br /&gt;
                    if lungime_curenta &amp;gt; lungime_maxima:&lt;br /&gt;
                        lungime_maxima = lungime_curenta&lt;br /&gt;
        with open(&amp;quot;lungimeout.txt&amp;quot;, &amp;quot;w&amp;quot;) as out_file:&lt;br /&gt;
            out_file.write(str(lungime_maxima) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;lungimein.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        sir = list(map(int, f.readline().split()))&lt;br /&gt;
    lungime_maxima_secventa(n, sir)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0558_-_Cartonase_2&amp;diff=8208</id>
		<title>0558 - Cartonase 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0558_-_Cartonase_2&amp;diff=8208"/>
		<updated>2023-12-17T11:47:41Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Cerința == Supărat că Gigel a reușit, cu ajutorul vostru ( vezi problema Cartonașe ), să refacă progresia aritmetică scrisă pe cele n cartonașe, maleficul Costel este hotărât să intervină din nou.  Astfel, observă că Gigel a notat din nou pe n cartonașe cei n termeni consecutivi ai unei progresii aritmetice. Profitând de lipsa acestuia, Costel a ascuns un număr oarecare de cartonașe și le-a amestecat pe celelalte.  La întoarcere, Gigel constată lipsa...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Supărat că Gigel a reușit, cu ajutorul vostru ( vezi problema Cartonașe ), să refacă progresia aritmetică scrisă pe cele n cartonașe, maleficul Costel este hotărât să intervină din nou.&lt;br /&gt;
&lt;br /&gt;
Astfel, observă că Gigel a notat din nou pe n cartonașe cei n termeni consecutivi ai unei progresii aritmetice. Profitând de lipsa acestuia, Costel a ascuns un număr oarecare de cartonașe și le-a amestecat pe celelalte.&lt;br /&gt;
&lt;br /&gt;
La întoarcere, Gigel constată lipsa a m cartonașe și vă roagă să-l ajutați să afle care sunt valorile scrise pe cartonașele care lipsesc.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele n m, cu semnificația de mai sus, apoi n-m numere naturale, reprezentând valorile scrise pe cartonașele care nu au fost ascunse.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran m numere ordonate crescător, separate prin exact un spaţiu, reprezentând valorile scrise pe cartonașele ascunse.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 4 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 1.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;m&#039;&#039;&#039; &amp;amp;les; n-2&lt;br /&gt;
* valorile scrise de Gigel pe cele n cartonașe 1.000.000.000&lt;br /&gt;
* Costel nu va lua niciodată primul sau ultimul cartonaș&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6 2&lt;br /&gt;
: 13 19 7 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
: 10 16&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Cele șase numere scrise de Gigel erau 4 7 10 13 16 19. Dintre acestea, lipsesc două, și anume 10 și 16.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 3 2&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#0558 - Cartonase2&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, m):&lt;br /&gt;
    if not (4 &amp;lt;= n &amp;lt;= 1000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= m &amp;lt;= n - 2):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezolva_problema(n, m, cartonase_scrise):&lt;br /&gt;
    cartonase_scrise.sort()&lt;br /&gt;
    diferenta = (cartonase_scrise[-1] - cartonase_scrise[0]) // (n - 1)&lt;br /&gt;
    cartonase_lipsa = []&lt;br /&gt;
    for i in range(cartonase_scrise[0], cartonase_scrise[-1], diferenta):&lt;br /&gt;
        if i not in cartonase_scrise:&lt;br /&gt;
            cartonase_lipsa.append(i)&lt;br /&gt;
    return cartonase_lipsa[:m]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
n, m = map(int, input(&amp;quot;Introduceti n si m: &amp;quot;).split())&lt;br /&gt;
if validare_date(n, m):&lt;br /&gt;
    cartonase_scrise = list(map(int, input(f&amp;quot;Introduceti {n-m} numere scrise pe cartonase: &amp;quot;).split()))&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    rezultat = rezolva_problema(n, m, cartonase_scrise)&lt;br /&gt;
    print(*rezultat)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    exit(0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2015_-_Suma_Gauss_1&amp;diff=8206</id>
		<title>2015 - Suma Gauss 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2015_-_Suma_Gauss_1&amp;diff=8206"/>
		<updated>2023-12-17T11:26:40Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Cerința == Cei n copii din clasa a V-a şi-au ales câte un număr natural dintre numerele de la 1 la n, neavând doi copii acelaşi număr. Fiecare copil a calculat suma numerelor naturale mai mici sau egale cu numărul ales, apoi doamna de mate a calculat suma pătratelor rezultatelor obţinute de copii. Voi trebuie să aflaţi rezultatul obţinut de doamna de mate.  == Date de intrare == Fișierul de intrare sumagauss1in.txt conține pe prima linie numărul n de copii...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Cei n copii din clasa a V-a şi-au ales câte un număr natural dintre numerele de la 1 la n, neavând doi copii acelaşi număr. Fiecare copil a calculat suma numerelor naturale mai mici sau egale cu numărul ales, apoi doamna de mate a calculat suma pătratelor rezultatelor obţinute de copii. Voi trebuie să aflaţi rezultatul obţinut de doamna de mate.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare sumagauss1in.txt conține pe prima linie numărul n de copii din clasă.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire sumagauss1out.txt va conține pe prima linie rezultatul obţinut de doamna de mate.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 500.000.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; sumagauss1in.txt&lt;br /&gt;
: 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; sumagauss1out.txt&lt;br /&gt;
: 46&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Numerele calculate de copii sunt 1, 3, 6. Numărul calculat de doamna de mate este 46.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; sumagauss1in.txt&lt;br /&gt;
: 500000001&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#2015 - SumaGauss1&lt;br /&gt;
&lt;br /&gt;
def validare_date(n):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 500000000):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezultat_doamna_de_mate(n):&lt;br /&gt;
    suma = 0&lt;br /&gt;
    suma_patrate = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        suma += i&lt;br /&gt;
        suma_patrate += suma ** 2&lt;br /&gt;
&lt;br /&gt;
    return suma_patrate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;sumagauss1in.txt&amp;quot;, &amp;quot;r&amp;quot;) as file:&lt;br /&gt;
    n = int(file.readline().strip())&lt;br /&gt;
&lt;br /&gt;
if validare_date(n):&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    exit(0)&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;sumagauss1out.txt&amp;quot;, &amp;quot;w&amp;quot;) as file:&lt;br /&gt;
    rezultat = rezultat_doamna_de_mate(n)&lt;br /&gt;
    file.write(str(rezultat) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1963_-_OP&amp;diff=8203</id>
		<title>1963 - OP</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1963_-_OP&amp;diff=8203"/>
		<updated>2023-12-17T09:22:41Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Șcuțu este un mare matematician. Într-o seară acesta a inventat operația ∆. Operația ∆ se aplică pe 2 numere naturale, astfel:  290 ∆ 345 = 290345 &amp;lt;br&amp;gt; 21 ∆ 12 = 2112&amp;lt;br&amp;gt; 456 ∆ 0 = 4560  Mygo și Seba sunt la rândul lor foarte buni informaticieni. Aceștia au un vector A cu N elemente, numere naturale, indexate de la 1. Ei vor construi un nou vector V, acesta la rândul său indexat de la 1, ce conține fiecare valoare A[i] ∆ A[j] (1 ≤ i, j...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Șcuțu este un mare matematician. Într-o seară acesta a inventat operația ∆. Operația ∆ se aplică pe 2 numere naturale, astfel:&lt;br /&gt;
&lt;br /&gt;
290 ∆ 345 = 290345 &amp;lt;br&amp;gt;&lt;br /&gt;
21 ∆ 12 = 2112&amp;lt;br&amp;gt;&lt;br /&gt;
456 ∆ 0 = 4560&lt;br /&gt;
&lt;br /&gt;
Mygo și Seba sunt la rândul lor foarte buni informaticieni. Aceștia au un vector A cu N elemente, numere naturale, indexate de la 1. Ei vor construi un nou vector V, acesta la rândul său indexat de la 1, ce conține fiecare valoare A[i] ∆ A[j] (1 ≤ i, j ≤ N) pe care îl vor sorta crescător.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Acum Șcuțu le va pune celor 2 câte două întrebări:&lt;br /&gt;
&lt;br /&gt;
1. Câte valori din V sunt mai mici sau egale cu X ? &amp;lt;br&amp;gt;&lt;br /&gt;
2. Pentru X dat, ce valoare se află pe poziția X ?&lt;br /&gt;
&lt;br /&gt;
Să se răspundă la cele 2 întrebări.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare opin.txt conține pe prima linie numărul t, având valoarea 1 sau 2, reprezentând tipul întrebării la care se cere răspunsul. Pe a doua linie linie se află numărul N și X iar pe a treia linie se vor afla N numere naturale nenule, reprezentând valorile vectorului A.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire opout.txt va conține pe prima linie numărul S, reprezentând răspunsul întrebării.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;N&#039;&#039;&#039; &amp;amp;les; 100.000&lt;br /&gt;
* numerele de pe a treia linie a fișierului de intrare vor fi mai mici decât 1.000.000.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; opin.txt&lt;br /&gt;
: 1&lt;br /&gt;
: 3 23&lt;br /&gt;
: 1 2 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; opout.txt&lt;br /&gt;
: 5&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
V = {11, 12, 14, 21, 22, 24, 41, 42, 44}. Sunt 5 numere mai mici decât 23.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; opin.txt&lt;br /&gt;
: 2&lt;br /&gt;
: 3 6&lt;br /&gt;
: 1 2 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; opout.txt&lt;br /&gt;
: 24&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
V = {11, 12, 14, 21, 22, 24, 41, 42, 44}. Pe poziția 6 se află numărul 24.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; opin.txt&lt;br /&gt;
: 3&lt;br /&gt;
: 3 6&lt;br /&gt;
: 1 2 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1963 - Op&lt;br /&gt;
&lt;br /&gt;
def valideaza_input(t, n, a):&lt;br /&gt;
    if t not in [1, 2]:&lt;br /&gt;
        return False&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 100000:&lt;br /&gt;
        return False&lt;br /&gt;
    if not all(0 &amp;lt; ai &amp;lt; 1000000000 for ai in a):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculeaza_v(n, a):&lt;br /&gt;
    v = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            v.append(int(str(a[i]) + str(a[j])))&lt;br /&gt;
    return sorted(v)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numara_valori_mai_mici_sau_egale_cu_x(v, x):&lt;br /&gt;
    count = 0&lt;br /&gt;
    for value in v:&lt;br /&gt;
        if value &amp;lt;= x:&lt;br /&gt;
            count += 1&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def gaseste_valoare_pe_pozitia_x(v, x):&lt;br /&gt;
    return v[x - 1]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    rezultat = 0&lt;br /&gt;
    with open(&amp;quot;opin.txt&amp;quot;, &amp;quot;r&amp;quot;) as file:&lt;br /&gt;
        t = int(file.readline().strip())&lt;br /&gt;
        n, x = map(int, file.readline().strip().split())&lt;br /&gt;
        a = list(map(int, file.readline().strip().split()))&lt;br /&gt;
&lt;br /&gt;
    if valideaza_input(t, n, a):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        if t == 1:&lt;br /&gt;
            v = calculeaza_v(n, a)&lt;br /&gt;
            rezultat = numara_valori_mai_mici_sau_egale_cu_x(v, x)&lt;br /&gt;
        elif t == 2:&lt;br /&gt;
            v = calculeaza_v(n, a)&lt;br /&gt;
            rezultat = gaseste_valoare_pe_pozitia_x(v, x)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;opout.txt&amp;quot;, &amp;quot;w&amp;quot;) as output_file:&lt;br /&gt;
        output_file.write(str(rezultat))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1436_-_Distanta_Maxima&amp;diff=8201</id>
		<title>1436 - Distanta Maxima</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1436_-_Distanta_Maxima&amp;diff=8201"/>
		<updated>2023-12-16T21:10:31Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Cerința == Fie S un şir cu numere naturale nenule. Considerând distanţa dintre elementele Si şi Sj ca fiind egală cu |i−j|, scrieţi un program care determină distanţa maximă dintre două valori egale din şir.  == Date de intrare == Fișierul de intrare distantain.txt conține pe prima linie maxim 100.000 de numere naturale, reprezentând elementele şirului S.  == Date de ieșire == Fișierul de ieşire distantaout.txt va conţine pe prima linie distanţa maxi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Fie S un şir cu numere naturale nenule. Considerând distanţa dintre elementele Si şi Sj ca fiind egală cu |i−j|, scrieţi un program care determină distanţa maximă dintre două valori egale din şir.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare distantain.txt conține pe prima linie maxim 100.000 de numere naturale, reprezentând elementele şirului S.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieşire distantaout.txt va conţine pe prima linie distanţa maximă dintre două valori egale din şir. Dacă şirul are toate elementele distincte, distanţa va fi egală cu 0.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* Fiecare element al şirului este un număr natural din intervalul [1,1000]&lt;br /&gt;
* Elementele şirului sunt numerotate de la 1&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; distantain.txt&lt;br /&gt;
: 30 33 16 33 37 16 72 65 16 46&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; distantaout.txt&lt;br /&gt;
: 6&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
S={30, 33, &amp;lt;b&amp;gt;16&amp;lt;/b&amp;gt;, 33, 37, &amp;lt;b&amp;gt;16&amp;lt;/b&amp;gt;, 72, 65, ;16, 46}. Distanţa maximă este cea dintre elementele subliniate (9−3=6).&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; distantain.txt&lt;br /&gt;
: 1001 33 16 33 37 16 72 65 16 46&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1436 - Distanta maxima&lt;br /&gt;
&lt;br /&gt;
def validare_sir(sir):&lt;br /&gt;
    elemente = sir.split()&lt;br /&gt;
&lt;br /&gt;
    if len(elemente) &amp;gt; 100000:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for elem in elemente:&lt;br /&gt;
        if not (elem.isdigit() and 1 &amp;lt;= int(elem) &amp;lt;= 1000):&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def distanta_maxima(sir):&lt;br /&gt;
    elemente = sir.split()&lt;br /&gt;
    pozitii = {}&lt;br /&gt;
    max_distanta = 0&lt;br /&gt;
&lt;br /&gt;
    for i, elem in enumerate(elemente):&lt;br /&gt;
        if elem in pozitii:&lt;br /&gt;
            distanta = i - pozitii[elem]&lt;br /&gt;
            max_distanta = max(max_distanta, distanta)&lt;br /&gt;
        else:&lt;br /&gt;
            pozitii[elem] = i&lt;br /&gt;
&lt;br /&gt;
    return max_distanta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;distantain.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        sir = f.readline().strip()&lt;br /&gt;
&lt;br /&gt;
    rezultat = 0&lt;br /&gt;
&lt;br /&gt;
    if validare_sir(sir):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        rezultat = distanta_maxima(sir)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;distantaout.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        f.write(str(rezultat) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3400_-_culori5&amp;diff=8197</id>
		<title>3400 - culori5</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3400_-_culori5&amp;diff=8197"/>
		<updated>2023-12-16T20:13:31Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == În jurul muzeului din orașul Smallville exista un gard ce conține N scânduri de înălțimi diferite. Putem spune că scândura i are înălțimea Hi. Directorul muzeului le-a cerut angajaților să vopsească acest gard cu un număr minim de culori, astfel încât să se respecte următoarea condiție: pentru un număr întreg K cunoscut, orice secvență de K scânduri consecutive nu trebuie să conțină două scânduri de aceeași înălțime, colorate id...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
În jurul muzeului din orașul Smallville exista un gard ce conține N scânduri de înălțimi diferite. Putem spune că scândura i are înălțimea Hi. Directorul muzeului le-a cerut angajaților să vopsească acest gard cu un număr minim de culori, astfel încât să se respecte următoarea condiție: pentru un număr întreg K cunoscut, orice secvență de K scânduri consecutive nu trebuie să conțină două scânduri de aceeași înălțime, colorate identic.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieţi un program care să găsească numărul minim de culori ce vor fi folosite pentru a colora gardul.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare culoriin.txt conține pe prima linie N K – două numere întregi reprezentând numărul de scânduri și lungimea secvenței. Pe următoarea linie, N numere naturale Hi reprezentand înălțimile celor N scânduri&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire culoriout.txt va conține un număr întreg C reprezentând numărul minim de culori folosite.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;K&#039;&#039;&#039; &amp;amp;les; 200.000&lt;br /&gt;
* 1 &amp;amp;les;&#039;&#039;&#039;K&#039;&#039;&#039;&amp;amp;les; &#039;&#039;&#039;N&#039;&#039;&#039; &amp;amp;les; 1.000.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;Hi&#039;&#039;&#039; &amp;amp;les; 1.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; culoriin.txt&lt;br /&gt;
: 6 4&lt;br /&gt;
: 1 1 2 1 3 2&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; culoriout.txt&lt;br /&gt;
: 3&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
O posibilă colorare a scândurilor folosind culorile 1, 2, 3 este: 1 2 1 3 1 2.&lt;br /&gt;
Există 3 secvențe: 1 1 2 1, 1 2 1 3 și 2 1 3 2 și orice secvență respectă condiția din enunț.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; culoriin.txt&lt;br /&gt;
: 4 6&lt;br /&gt;
: 1 1 2 1 3 2&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#3400 - Culori5&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, k, hi):&lt;br /&gt;
    if not (1 &amp;lt;= k &amp;lt;= 200000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= k &amp;lt;= n &amp;lt;= 1000000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not all(1 &amp;lt;= h &amp;lt;= 1000 for h in hi):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_minim_culori(n, k, hi):&lt;br /&gt;
    culori = 0&lt;br /&gt;
    culoare_actuala = {}&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        inaltime = hi[i]&lt;br /&gt;
&lt;br /&gt;
        if inaltime not in culoare_actuala:&lt;br /&gt;
            culoare_actuala[inaltime] = 1&lt;br /&gt;
            culori = max(culori, 1)&lt;br /&gt;
        else:&lt;br /&gt;
            culoare_actuala[inaltime] += 1&lt;br /&gt;
            culori = max(culori, culoare_actuala[inaltime])&lt;br /&gt;
&lt;br /&gt;
            if i &amp;gt;= k - 1:&lt;br /&gt;
                culoare_actuala[hi[i - k + 1]] -= 1&lt;br /&gt;
&lt;br /&gt;
    return culori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;culoriin.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        n, k = map(int, fin.readline().split())&lt;br /&gt;
        hi = list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n, k, hi):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        rezultat = numar_minim_culori(n, k, hi)&lt;br /&gt;
        with open(&amp;quot;culoriout.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(str(rezultat))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3583_-_jetoane&amp;diff=8196</id>
		<title>3583 - jetoane</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3583_-_jetoane&amp;diff=8196"/>
		<updated>2023-12-16T18:59:21Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Enunț == Ionel şi Georgel colecţionează jetoane care se găsesc în revistele Scooby-Doo. Jetoanele au înscrise pe ele diferite valori, numere naturale distincte, un copil neputând avea două sau mai multe jetoane cu aceeaşi valoare. Ei propun următorul joc: având în faţă jetoanele proprii, determină împreună care este jetonul de valoare comună cu cea mai mică valoare înscrisă şi jetonul de valoare comună cu cea mai mare valoare înscrisă. După ce au...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Ionel şi Georgel colecţionează jetoane care se găsesc în revistele Scooby-Doo. Jetoanele au înscrise pe ele diferite valori, numere naturale distincte, un copil neputând avea două sau mai multe jetoane cu aceeaşi valoare. Ei propun următorul joc: având în faţă jetoanele proprii, determină împreună care este jetonul de valoare comună cu cea mai mică valoare înscrisă şi jetonul de valoare comună cu cea mai mare valoare înscrisă. După ce au identificat aceste jetoane, câştigătorul este acela care va avea cele mai multe jetoane după eliminarea acelora cu valori cuprinse între minimul şi maximul comun, inclusiv minimul şi maximul.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Determinaţi valorile minimă şi maximă comune, precum şi câştigătorul jocului.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare jetoanein.txt conţine pe prima linie două numere naturale separate printr-un singur spaţiu, m şi n reprezentând numărul de jetoane ale primului copil şi respectiv numărul de jetoane ale celui de-al doilea copil. Pe următoarea linie sunt m+n valori separate prin câte un spaţiu, ce reprezintă jetoanele primului şi apoi jetoanele celui de-al doilea copil.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieșire jetoaneout.txt conţine pe prima linie trei valori întregi Min Max C separate prin câte un spaţiu, unde Min este valoarea minimă comună, Max este valoarea maximă comună, iar C va fi 0, dacă jocul se încheie la egalitate, 1 dacă va câştiga primul copil, sau 2, dacă va câştiga cel de-al doilea copil.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n, m&#039;&#039;&#039; &amp;amp;les; 28.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;valoarea de pe un jeton&#039;&#039;&#039; &amp;amp;les; 50.000&lt;br /&gt;
* Vor exista cel puţin două valori comune&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; jetoanein.txt&lt;br /&gt;
: 10 6&lt;br /&gt;
: 1 3 2 4 7 5 8 19 27 9 3 8 80 6 18 19&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; jetoaneout.txt&lt;br /&gt;
: 3 19 1&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Jetonul comun cel mai mic este cel cu valoarea 3, iar cel mai mare are valoarea 19. Primul rămâne cu 3 jetoane (acestea sunt 1, 2, 27) şi al doilea rămâne cu unul singur (jetonul 80), deci jucătorul 1 este câştigător.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; jetoanein.txt&lt;br /&gt;
: 4 5&lt;br /&gt;
: 6 7 1 90 6 7 68 1 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; jetoaneout.txt&lt;br /&gt;
: 1 7 0&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Jetonul comun cel mai mic este cel cu valoarea 1, iar cel mai mare are valoarea 7. Primul rămâne cu un jeton (acesta este 90) şi al doilea rămâne cu unul singur (jetonul 68), deci egalitate.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; jetoanein.txt&lt;br /&gt;
: 4 28001&lt;br /&gt;
: 6 7 1 90 6 7 68 1 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#3583 - Jetoane&lt;br /&gt;
&lt;br /&gt;
def valideaza_input(m, n, jetoane):&lt;br /&gt;
    # Funcție de validare a datelor de intrare conform restricțiilor&lt;br /&gt;
    if not (0 &amp;lt; m &amp;lt;= 28000 and 0 &amp;lt; n &amp;lt;= 28000):&lt;br /&gt;
        return False&lt;br /&gt;
    if len(jetoane) != m + n:&lt;br /&gt;
        return False&lt;br /&gt;
    return all(0 &amp;lt; val &amp;lt;= 50000 for val in jetoane)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def gaseste_valori_comune(jetoane1, jetoane2):&lt;br /&gt;
    # Funcție pentru găsirea valorilor comune dintre cei doi copii&lt;br /&gt;
    valori_comune = set(jetoane1) &amp;amp; set(jetoane2)&lt;br /&gt;
    return valori_comune&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def determina_castigator(jetoane_copil1, jetoane_copil2, valori_comune):&lt;br /&gt;
    # Funcție pentru determinarea câștigătorului&lt;br /&gt;
    jetoane_ramase_copil1 = [val for val in jetoane_copil1 if val not in valori_comune]&lt;br /&gt;
    jetoane_ramase_copil2 = [val for val in jetoane_copil2 if val not in valori_comune]&lt;br /&gt;
&lt;br /&gt;
    if len(jetoane_ramase_copil1) &amp;gt; len(jetoane_ramase_copil2):&lt;br /&gt;
        return 1&lt;br /&gt;
    elif len(jetoane_ramase_copil1) &amp;lt; len(jetoane_ramase_copil2):&lt;br /&gt;
        return 2&lt;br /&gt;
    else:&lt;br /&gt;
        return 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Citirea datelor din fișierul de intrare&lt;br /&gt;
    with open(&amp;quot;jetoanein.txt&amp;quot;, &amp;quot;r&amp;quot;) as infile:&lt;br /&gt;
        m, n = map(int, infile.readline().split())&lt;br /&gt;
        jetoane = list(map(int, infile.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    # Validare date de intrare&lt;br /&gt;
    if valideaza_input(m, n, jetoane):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
    # Separarea jetoanelor pentru fiecare copil&lt;br /&gt;
    jetoane_copil1 = jetoane[:m]&lt;br /&gt;
    jetoane_copil2 = jetoane[m:]&lt;br /&gt;
&lt;br /&gt;
    # Găsirea valorilor comune&lt;br /&gt;
    valori_comune = gaseste_valori_comune(jetoane_copil1, jetoane_copil2)&lt;br /&gt;
&lt;br /&gt;
    # Determinarea valorilor minimă și maximă comune&lt;br /&gt;
    valoare_minima_comuna = min(valori_comune)&lt;br /&gt;
    valoare_maxima_comuna = max(valori_comune)&lt;br /&gt;
&lt;br /&gt;
    # Determinarea câștigătorului și scrierea rezultatelor în fișierul de ieșire&lt;br /&gt;
    castigator = determina_castigator(jetoane_copil1, jetoane_copil2, valori_comune)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;jetoaneout.txt&amp;quot;, &amp;quot;w&amp;quot;) as outfile:&lt;br /&gt;
        outfile.write(f&amp;quot;{valoare_minima_comuna} {valoare_maxima_comuna} {castigator}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2296_-_gcd&amp;diff=8195</id>
		<title>2296 - gcd</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2296_-_gcd&amp;diff=8195"/>
		<updated>2023-12-16T18:29:06Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Cerința == Se dau două șiruri de câte N numere naturale fiecare. Se cere să se găsească valoarea maximă a celui mai mare divizor comun a două numere A și B, astfel încât A să aparțină primului șir, iar B să aparțină celui de-al doilea șir.  == Date de intrare == În fișierul gcdin.txt se va afla pe prima linie un număr reprezentând valoarea lui N. Pe cea de-a doua linie se vor afla N numere separate prin câte un spațiu, reprezentând elementele pri...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Se dau două șiruri de câte N numere naturale fiecare. Se cere să se găsească valoarea maximă a celui mai mare divizor comun a două numere A și B, astfel încât A să aparțină primului șir, iar B să aparțină celui de-al doilea șir.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
În fișierul gcdin.txt se va afla pe prima linie un număr reprezentând valoarea lui N. Pe cea de-a doua linie se vor afla N numere separate prin câte un spațiu, reprezentând elementele primului șir. Pe cea de-a treia linie se vor afla N numere separate prin câte un spațiu, reprezentând elementele celui de-al doilea șir.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
În fișierul gcdout.txt se va afla pe primia linie un număr natural reprezentând valoarea maximă a celui mai mare divizor comun a două numere A și B, astfel încât A să aparțină primului șir, iar B să aparțină celui de-al doilea șir.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;N&#039;&#039;&#039; &amp;amp;les; 500.000&lt;br /&gt;
* Elementele celor două șiruri sunt mai mici sau egale cu 1.000.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; gcdin.txt&lt;br /&gt;
: 5&lt;br /&gt;
: 3 1 4 2 8&lt;br /&gt;
: 5 2 12 8 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; gcdout.txt&lt;br /&gt;
: 8&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
A = 8, B = 8, iar (A,B) = 8 este valoarea maximă a celui mai mare divizor comun a vreunei perechi.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; gcdin.txt&lt;br /&gt;
: 500001&lt;br /&gt;
: 3 1 4 2 8&lt;br /&gt;
: 5 2 12 8 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#2296 - GCD&lt;br /&gt;
&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, sir1, sir2):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 500000:&lt;br /&gt;
        return False&lt;br /&gt;
    if any(not 1 &amp;lt;= x &amp;lt;= 1000000 for x in sir1 + sir2):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def gcd_maxim(sir1, sir2):&lt;br /&gt;
    gcd_max = 0&lt;br /&gt;
    for a in sir1:&lt;br /&gt;
        for b in sir2:&lt;br /&gt;
            gcd_max = max(gcd_max, math.gcd(a, b))&lt;br /&gt;
    return gcd_max&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Citire date de intrare&lt;br /&gt;
with open(&#039;gcdin.txt&#039;, &#039;r&#039;) as f:&lt;br /&gt;
    n = int(f.readline())&lt;br /&gt;
    sir1 = list(map(int, f.readline().split()))&lt;br /&gt;
    sir2 = list(map(int, f.readline().split()))&lt;br /&gt;
&lt;br /&gt;
# Validare date de intrare&lt;br /&gt;
if validare_date(n, sir1, sir2):&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    # Calcul și afișare rezultat&lt;br /&gt;
    rezultat = gcd_maxim(sir1, sir2)&lt;br /&gt;
    with open(&#039;gcdout.txt&#039;, &#039;w&#039;) as f:&lt;br /&gt;
        f.write(str(rezultat) + &#039;\n&#039;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    exit(0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4144_-_Graffiti&amp;diff=8125</id>
		<title>4144 - Graffiti</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4144_-_Graffiti&amp;diff=8125"/>
		<updated>2023-12-14T21:40:27Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: Pagină nouă: == Cerința == RAU-Gigel și-a descoperit o nouă pasiune: graffiti-ul. El simte o nevoie din ce în ce mai puternică de a-și manifesta spiritul artistic, de a exersa, de a explora, și de a încerca noi și noi tehnici … și pentru asta are nevoie de spațiu.  Făcând o incursiune prin cartier, RAU-Gigel descoperă un depou părăsit împrejmuit de un gard format din plăci de beton de lățimi și înălțimi diferite, dispuse în linie continuă. „O pânză imaculat...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
RAU-Gigel și-a descoperit o nouă pasiune: graffiti-ul. El simte o nevoie din ce în ce mai puternică de a-și manifesta spiritul artistic, de a exersa, de a explora, și de a încerca noi și noi tehnici … și pentru asta are nevoie de spațiu.&lt;br /&gt;
&lt;br /&gt;
Făcând o incursiune prin cartier, RAU-Gigel descoperă un depou părăsit împrejmuit de un gard format din plăci de beton de lățimi și înălțimi diferite, dispuse în linie continuă. „O pânză imaculată” se gândește el. Și începe să măsoare plăcile de beton, una câte una, cu gândul ca, odată ajuns acasă, să schițeze următoarea sa creație artistică.&lt;br /&gt;
&lt;br /&gt;
El vrea să aleagă câteva plăci de beton alăturate și pe dreptunghiul maximal delimitat de acestea, să își făurească creația. Care este suprafața maximă de desenare ? Ajutați-l pe RAU-Gigel să facă mai multe simulări.&lt;br /&gt;
&lt;br /&gt;
Gardul format din plăci de beton, numerotate de la 1 la 5, de dimensiuni (lățime X înălțime): 4 X 8, 5 X 4, 7 X 2, 3 X 3, 8 X 10 unități de mărime. Prin interogări repetate de forma (x, y), RAU-Gigel vrea să afle cât de mare poate fi suprafața de desenare în formă dreptunghiulară ce va acoperi plăcile de beton alipite: x, x+1, ... , y.&lt;br /&gt;
&lt;br /&gt;
De exemplu, la interogarea (2, 4), desenul va avea lățimea 5 + 7 + 3 = 15, și înălțimea minim (4, 2, 3) = 2, deci suprafața de desenare va fi de mărime 30. Se va folosi peste tot aceeași unitate de mărime.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare graffitiin.txt conține pe prima linie numărul natural N reprezentând numărul de plăci de beton, indexate de la 1 la N, apoi N linii care conțin perechi de forma L H, separate printr-un spațiu, reprezentând lățimea și înălțimea fiecărei plăci de beton. Urmează apoi un rând cu numărul natural Q ce reprezintă numărul de interogări, urmat de Q linii ce conțin interogările: perechi de forma x y, cu x ≤ y, separate printr-un spațiu.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire graffitiout.txt va conține răspunsurile la interogări, în ordinea solicitării, câte unul pe linie.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;N, Q, L, H&#039;&#039;&#039; &amp;amp;les; 100.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; graffitiin.txt&lt;br /&gt;
: 5&lt;br /&gt;
: 4 8&lt;br /&gt;
: 5 4&lt;br /&gt;
: 7 2&lt;br /&gt;
: 3 3&lt;br /&gt;
: 8 10&lt;br /&gt;
: 2&lt;br /&gt;
: 2 4&lt;br /&gt;
: 4 5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; graffitiout.txt&lt;br /&gt;
: 30&lt;br /&gt;
: 33&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Avem 5 plăci de beton cu dimensiunile 4 X 8, 5 X 4, 7 X 2, 3 X 3, 8 X 10 și 2 interogări.&lt;br /&gt;
&lt;br /&gt;
La interogarea (2, 4), suprafața desenată va avea lățimea 5 + 7 + 3 = 15, și înălțimea minim (4, 2, 3) = 2, deci suprafața 30.&lt;br /&gt;
&lt;br /&gt;
La interogarea (4, 5), suprafața desenată va avea lățimea 3 + 8 = 11, iar înălțimea sa va fi 3, deci suprafața 33.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; graffitiin.txt&lt;br /&gt;
: 5&lt;br /&gt;
: 4 8&lt;br /&gt;
: 5 4&lt;br /&gt;
: 7 2&lt;br /&gt;
: 3 3&lt;br /&gt;
: 8 10&lt;br /&gt;
: 100001&lt;br /&gt;
: 2 4&lt;br /&gt;
: 4 5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#4144 - Graffiti&lt;br /&gt;
&lt;br /&gt;
def validare_input(n, q, placi):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 100000 and 1 &amp;lt;= q &amp;lt;= 100000):&lt;br /&gt;
        return False&lt;br /&gt;
    if len(placi) != n:&lt;br /&gt;
        return False&lt;br /&gt;
    for L, H in placi:&lt;br /&gt;
        if not (1 &amp;lt;= L &amp;lt;= 100000 and 1 &amp;lt;= H &amp;lt;= 100000):&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calcul_suprafata_desen(placi, interogari):&lt;br /&gt;
    suprafete_desen = []&lt;br /&gt;
    for interogare in interogari:&lt;br /&gt;
        x, y = interogare&lt;br /&gt;
        latime = sum(placi[i][0] for i in range(x - 1, y))&lt;br /&gt;
        inaltime = min(placi[i][1] for i in range(x - 1, y))&lt;br /&gt;
        suprafete_desen.append(latime * inaltime)&lt;br /&gt;
    return suprafete_desen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;graffitiin.txt&amp;quot;, &amp;quot;r&amp;quot;) as fisier:&lt;br /&gt;
        n = int(fisier.readline())&lt;br /&gt;
        placi = [tuple(map(int, fisier.readline().split())) for _ in range(n)]&lt;br /&gt;
        q = int(fisier.readline())&lt;br /&gt;
        interogari = [tuple(map(int, fisier.readline().split())) for _ in range(q)]&lt;br /&gt;
&lt;br /&gt;
    if validare_input(n, q, placi):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
    suprafete_desen = calcul_suprafata_desen(placi, interogari)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;graffitiout.txt&amp;quot;, &amp;quot;w&amp;quot;) as fisier:&lt;br /&gt;
        for suprafata in suprafete_desen:&lt;br /&gt;
            fisier.write(str(suprafata) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2098_-_Meteo&amp;diff=7773</id>
		<title>2098 - Meteo</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2098_-_Meteo&amp;diff=7773"/>
		<updated>2023-12-11T09:58:53Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Centrul de meteorologie dintr-o ţară îndepărtată, aflată aproape de Polul Nord, doreşte să stabilească modul în care încălzirea globală afectează temperaturile din acea ţară. Ei notează pe parcursul a N zile consecutive temperaturile maxime zilnice şi sunt interesaţi să determine cea mai lungă perioadă continuă de timp în care temperaturile înregistrate în zile consecutive au alternat ca semn.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieţi un program care, pe baza temperaturilor înregistrate pe parcursul a N zile consecutive, determină o succesiune de zile consecutive având lungime maximă pentru care temperaturile înregistrate au alternat ca semn. Dacă există mai multe astfel de secvenţe, meteorologii sunt interesaţi de cea mai recentă. Dacă nu există măcar două zile consecutive cu temperaturi alternante ca semn, ei vor înregistra rezultatul 0.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare meteoin.txt conţine pe prima linie numărul natural N, reprezentând numărul total de zile pentru care se efectuează studiul. Pe cea de-a doua linie vor fi scrise N numere întregi separate prin spaţii, al i-lea număr de pe linie fiind temperatura maximă zilnică înregistrată în ziua i a studiului (1≤i≤N).&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieşire meteoout.txt va conţine pe prima linie un număr natural NrMax, reprezentând numărul maxim de zile consecutive pentru care temperaturile au alternat ca semn. Pe cea de a doua linie vor fi scrise NrMax valori întregi, separate prin spaţii, reprezentând temperaturile (alternante ca semn) înregistrate în cele NrMax zile. În cazul în care nu există nici măcar două zile consecutive cu temperaturi alternante ca semn, fişierul de ieşire va conţine o singură linie, pe care va fi scrisă valoarea 0.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 4 &amp;amp;les; &#039;&#039;&#039;N&#039;&#039;&#039; &amp;amp;les; 1.000&lt;br /&gt;
* Temperaturile maxime zilnice sunt numere întregi ce aparţin intervalului [-50,50].&lt;br /&gt;
* Temperatura de 0 grade va fi considerată pozitivă.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; meteoin.txt&lt;br /&gt;
: 16&lt;br /&gt;
: 1 -5 -3 2 -1 7 -2 5 1 7 -9 0 -1 6 -1 -8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; meteoout.txt&lt;br /&gt;
: 6&lt;br /&gt;
: -3 2 -1 7 -2 5&lt;br /&gt;
&lt;br /&gt;
=== Explicație === &lt;br /&gt;
Studiul a fost efectuat pe durata a 16 zile. În această perioadă au existat două secvenţe de zile consecutive având lungime maximă (6) şi în care temperaturile au alternat ca semn. În fişierul de ieşire a fost afişată prima dintre ele, cea mai recentă fiind 7 -9 0 -1 6 -1.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; meteoin.txt&lt;br /&gt;
: 2&lt;br /&gt;
: 0 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#2098 - Meteo&lt;br /&gt;
&lt;br /&gt;
def validare_date(n_zile_consecutive, temperaturi):&lt;br /&gt;
    if not (3 &amp;lt; n_zile_consecutive &amp;lt;= 1000):&lt;br /&gt;
        return False&lt;br /&gt;
    if len(temperaturi) != n_zile_consecutive:&lt;br /&gt;
        return False&lt;br /&gt;
    for temp in temperaturi:&lt;br /&gt;
        if not (-50 &amp;lt;= temp &amp;lt;= 50):&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def determina_secventa(n_zile_consecutive, temperaturi):&lt;br /&gt;
    secventa_maxima = []&lt;br /&gt;
    lungime_maxima = 0&lt;br /&gt;
    secventa_curenta = [temperaturi[0]]&lt;br /&gt;
    lungime_curenta = 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n_zile_consecutive):&lt;br /&gt;
        if temperaturi[i] * temperaturi[i - 1] &amp;lt; 0:&lt;br /&gt;
            secventa_curenta.append(temperaturi[i])&lt;br /&gt;
            lungime_curenta += 1&lt;br /&gt;
        else:&lt;br /&gt;
            secventa_curenta = [temperaturi[i]]&lt;br /&gt;
            lungime_curenta = 1&lt;br /&gt;
&lt;br /&gt;
        if lungime_curenta &amp;gt; lungime_maxima:&lt;br /&gt;
            lungime_maxima = lungime_curenta&lt;br /&gt;
            secventa_maxima = secventa_curenta.copy()&lt;br /&gt;
&lt;br /&gt;
    return lungime_maxima, secventa_maxima&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;meteoin.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n_zile_consecutive = int(f.readline())&lt;br /&gt;
        temperaturi = list(map(int, f.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n_zile_consecutive, temperaturi):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
    lungime_maxima, secventa_maxima = determina_secventa(n_zile_consecutive, temperaturi)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;meteoout.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        if lungime_maxima &amp;lt; 2:&lt;br /&gt;
            f.write(&amp;quot;0\n&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            f.write(f&amp;quot;{lungime_maxima}\n&amp;quot;)&lt;br /&gt;
            f.write(&amp;quot; &amp;quot;.join(map(str, secventa_maxima)))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3440_-_Buldo&amp;diff=7772</id>
		<title>3440 - Buldo</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3440_-_Buldo&amp;diff=7772"/>
		<updated>2023-12-11T09:50:39Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Dorești să nivelezi terenul pe care l-ai cumpărat, care are lățimea de 1 metru și lungimea de N metri, fiind alcătuit din N zone succesive, fiecare zonă având lungimea de 1 metru. Terenul se reprezintă ca un șir de N numere naturale h1, h2, h3, …, hN reprezentând înălțimile în metri pe care le au zonele din terenul inițial, privite de la stânga spre dreapta.&lt;br /&gt;
&lt;br /&gt;
Pentru a nivela terenul ai închiriat un buldozer care funcționează astfel. Se alege o înălțime H (număr natural) la care ridicăm lama buldozerului. Inițial buldozerul are pe lamă o cantitate C=0 metri cubi de pământ. Buldozerul începe să mergă de la stânga la dreapta și când ajunge la zona i, în funcție de înălțimea hi a acesteia, se va afla în una dintre următoarele situații:&lt;br /&gt;
&lt;br /&gt;
 - dacă hi ≥ H atunci cantitatea suplimentară hi - H se adaugă la C și nivelul zonei ajunge la H.&lt;br /&gt;
 - dacă hi &amp;lt; H atunci se scade din C diferența H - hi pentru a aduce nivelul zonei la nivelul H.&lt;br /&gt;
Remarcăm faptul că H trebuie ales inițial astfel încât de fiecare dată când buldozerul ajunge în a doua situație să aibă pe lamă suficient pământ (C ≥ H - hi). După ce buldozerul parcurge cele N zone de lungime 1 pe lama buldozerului e posibil să mai rămână pământ, dar asta nu te interesează, pentru că la capătul din dreapta al terenului este un râu, și pământul rămas se va vărsa acolo.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieţi un program care calculează înălțimea maximă H la care poate fi ridicată lama, astfel încât terenul să poată fi nivelat la acea înălțime.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare buldoin.txt conține pe prima linie numărul natural N, iar pe a doua linie, separate prin câte un spațiu, cele N numere naturale h1, h2, h3, …, hN, cu semnificația din enunț.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire buldoout.txt va conține o singură linie, pe care va fi scris numărul natural H cerut.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;N&#039;&#039;&#039; &amp;amp;les; 100.000&lt;br /&gt;
* Înălțimile sunt numere naturale, 1 &amp;amp;les; &#039;&#039;&#039;hi&#039;&#039;&#039; &amp;amp;les; 1.000.000.000, pentru orice i, 1 &amp;amp;les; &#039;&#039;&#039;i&#039;&#039;&#039; &amp;amp;les; N&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; buldoin.txt&lt;br /&gt;
: 4&lt;br /&gt;
: 5 2 1 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; buldoout.txt&lt;br /&gt;
: 2&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Dacă se fixează lama la înălțimea H=2, după ce se trece de zona 1 (primul metru pe lungime), această zonă rămâne la înălțimea 2 și C=3 metri cubi de pământ sunt duși de lamă la zona 2. Acolo se vor obține în total 2+3=5 metri cubi de pământ, dar se păstrează doar 2, iar restul de C=3 se transportă la zona 3. La zona 3 se vor obține în total 1+3=4 metri cubi de pământ, dar se păstrează doar 2, iar restul de C=2 se transportă la zona 4. La zona 4 se vor obține în total 6+2=8 metri cubi de pământ, dar se păstrează doar 2, iar restul de C=6 se aruncă în râu.&lt;br /&gt;
&lt;br /&gt;
Dacă s-ar fixa lama la înălțimea H=3, la zona 3 se poate ajunge doar la înălțimea 2 și încercarea eșuează (fiind o înălțime mai mică decât cea propusă).&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; buldoin.txt&lt;br /&gt;
: 100001&lt;br /&gt;
: 5 2 1 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#3440 - Buldo&lt;br /&gt;
&lt;br /&gt;
def validare_inaltime(h, H, C):&lt;br /&gt;
    for hi in h:&lt;br /&gt;
        if hi &amp;gt;= H:&lt;br /&gt;
            C += hi - H&lt;br /&gt;
        elif C &amp;lt; H - hi:&lt;br /&gt;
            return False&lt;br /&gt;
        else:&lt;br /&gt;
            C -= H - hi&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cautare_binara(h):&lt;br /&gt;
    stanga, dreapta = 1, max(h)&lt;br /&gt;
    rezultat = 0&lt;br /&gt;
&lt;br /&gt;
    while stanga &amp;lt;= dreapta:&lt;br /&gt;
        mijloc = (stanga + dreapta) // 2&lt;br /&gt;
&lt;br /&gt;
        if validare_inaltime(h, mijloc, 0):&lt;br /&gt;
            rezultat = mijloc&lt;br /&gt;
            stanga = mijloc + 1&lt;br /&gt;
        else:&lt;br /&gt;
            dreapta = mijloc - 1&lt;br /&gt;
&lt;br /&gt;
    return rezultat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with open(&#039;buldoin.txt&#039;, &#039;r&#039;) as f:&lt;br /&gt;
    N = int(f.readline())&lt;br /&gt;
    h = list(map(int, f.readline().split()))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if 1 &amp;lt;= N &amp;lt;= 100000:&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    exit(0)&lt;br /&gt;
&lt;br /&gt;
for hi in h:&lt;br /&gt;
    if not 1 &amp;lt;= hi &amp;lt;= 1000000000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
rezultat = cautare_binara(h)&lt;br /&gt;
&lt;br /&gt;
with open(&#039;buldoout.txt&#039;, &#039;w&#039;) as g:&lt;br /&gt;
    g.write(str(rezultat) + &#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2900_-_Joc_9&amp;diff=7771</id>
		<title>2900 - Joc 9</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2900_-_Joc_9&amp;diff=7771"/>
		<updated>2023-12-11T09:39:33Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Amalia a adunat n cartonașe pe care le poate folosi în mai multe jocuri. Pe fiecare cartonaș este scris un singur număr care are cel puțin două cifre și cel mult nouă cifre. La jocul Numersum, ea utilizează cartonașele ce au numere pentru care prima cifră este egală cu suma celorlalte cifre din număr. Amalia dorește să aleagă cartonașele pentru acest joc și să le așeze în ordine crescătoare, după numerele scrise pe ele.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieți un program care, cunoscând numărul de cartonașe n și numerele scrise pe cele n cartonașe, determină în ordine crescătoare numerele pe care Amalia le poate utiliza la jocul Numersum.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare jocin.txt conține pe prima linie numărul natural n ce reprezintă numărul de cartonașe. Pe a doua linie din fișier se află n numere naturale c1, c2, … cn, reprezentând numerele scrise pe cele n cartonașe.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire jocout.txt conține o singură linie pe care se află în ordine crescătoare numerele scrise pe cartonașele ce se pot utiliza la jocul Numersum, separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 2 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 40.000&lt;br /&gt;
* 10 &amp;amp;les; &#039;&#039;&#039;ci&#039;&#039;&#039; &amp;amp;les; 999.999.999&lt;br /&gt;
* În setul de cartonașe al Amaliei există cel puțin un cartonaș ce poate fi ales la jocul Numersum&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; jocin.txt&lt;br /&gt;
: 7&lt;br /&gt;
: 211 58 55 514 101 9867 101&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; jocout.txt&lt;br /&gt;
: 55 101 101 211 514&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Numerele din șirul dat ce se pot utiliza la jocul Numersum sunt: 211 (2 = 1 + 1), 55 (5=5), 514, 101 (1 = 0 + 1), 101 și se vor afișa în ordine crescătoare.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; jocin.txt&lt;br /&gt;
: 2&lt;br /&gt;
: 9 511&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#2900 - Joc9&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, cartonase):&lt;br /&gt;
    if not (3 &amp;lt;= n &amp;lt;= 40000):&lt;br /&gt;
        return False&lt;br /&gt;
    for numar in cartonase:&lt;br /&gt;
        if not (10 &amp;lt;= numar &amp;lt; 1000000000):&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numere_pentru_joc(cartonase):&lt;br /&gt;
    rezultat = []&lt;br /&gt;
    for numar in cartonase:&lt;br /&gt;
        cifre = [int(digit) for digit in str(numar)]&lt;br /&gt;
        if cifre[0] == sum(cifre[1:]):&lt;br /&gt;
            rezultat.append(numar)&lt;br /&gt;
    return sorted(rezultat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;jocin.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline().strip())&lt;br /&gt;
        cartonase = list(map(int, f.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n, cartonase):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
    rezultat = numere_pentru_joc(cartonase)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;jocout.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        f.write(&amp;quot; &amp;quot;.join(map(str, rezultat)))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1380_-_Pluton&amp;diff=7770</id>
		<title>1380 - Pluton</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1380_-_Pluton&amp;diff=7770"/>
		<updated>2023-12-11T09:33:54Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
În timpul acţiunii “Furtuna în deşert” din cauza unei furtuni de nisip, n soldaţi s-au rătăcit de plutoanele lor. După trecerea furtunii se pune problema regrupării acestora pe plutoane. Pentru aceasta se folosesc plăcuţele de identificare pe care soldaţii le poartă la gât. Pe aceste plăcuţe sunt scrise numere care pot identifica fiecare soldat şi plutonul din care acesta face parte. Astfel, soldaţii din acelaşi pluton au numărul de identificare format din aceleaşi cifre, dispuse în altă ordine şi numerele de identificare sunt unice. De exemplu, numerele de identificare 78003433, 83043073, 33347008 indică faptul ca cei trei soldaţi care le poartă fac parte din acelaşi pluton.&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Fiind date cele n numere de pe plăcuţele de identificare, să se regrupeze cei n soldaţi pe plutoane, indicându-se numărul de plutoane găsite (un pluton refăcut trebuie să aibă minimum un soldat), numărul de soldaţi din cel mai numeros pluton, numărul de plutoane care au acest număr maxim de soldaţi precum şi componenţa unui astfel de pluton (cu număr maxim de soldaţi regrupaţi).&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare plutonin.txt conţine pe prima linie numărul n de soldaţi recuperaţi, iar pe fiecare dintre următoarele n linii câte un număr de identificare a celor n soldaţi.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieşire plutonout.txt va conţine pe prima linie numărul de plutoane refăcute. Linia a doua va conţine numărul de soldaţi din cel mai numeros pluton refăcut. Linia a treia va conţine numărul de plutoane care au numărul maxim de soldaţi recuperaţi. Linia a patra va conţine componenţa unui astfel de pluton, cu număr maxim de soldaţi recuperaţi, numerele de identificare ale soldaţilor din componenţă fiind scrise unul după altul separate prin câte un spaţiu.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 0 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 4.000&lt;br /&gt;
* 0 &amp;amp;les; &#039;&#039;&#039;numar de identificare&#039;&#039;&#039; &amp;amp;les; 1.999.999.999&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; plutonin.txt&lt;br /&gt;
: 10&lt;br /&gt;
: 1223 &lt;br /&gt;
: 123 &lt;br /&gt;
: 666 &lt;br /&gt;
: 321 &lt;br /&gt;
: 7890 &lt;br /&gt;
: 2213 &lt;br /&gt;
: 312 &lt;br /&gt;
: 655 &lt;br /&gt;
: 1000 &lt;br /&gt;
: 1322&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; plutonout.txt&lt;br /&gt;
: 6&lt;br /&gt;
: 3&lt;br /&gt;
: 2&lt;br /&gt;
: 1223 2213 1322&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
&lt;br /&gt;
Au fost recuperaţi soldaţi din 6 plutoane distincte, cei mai mulţi soldaţi recuperaţi dintr-un pluton fiind în număr de 3. Există 2 plutoane cu număr maxim de soldaţi recuperaţi (3), unul dintre ele fiind format din soldaţii cu numerele 1223 2213 1322. De remarcat că şi soluţia 321 312 123 este corectă.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; plutonin.txt&lt;br /&gt;
: 11&lt;br /&gt;
: 1223 &lt;br /&gt;
: 123 &lt;br /&gt;
: 666 &lt;br /&gt;
: 321 &lt;br /&gt;
: 7890 &lt;br /&gt;
: 2213 &lt;br /&gt;
: 312 &lt;br /&gt;
: 655 &lt;br /&gt;
: 1000 &lt;br /&gt;
: 1322&lt;br /&gt;
: 2000000000&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1380 - Pluton&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, identificari):&lt;br /&gt;
    if 0 &amp;lt; n &amp;lt;= 4000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
    for identificare in identificari:&lt;br /&gt;
        if not 0 &amp;lt;= identificare &amp;lt; 2000000000:&lt;br /&gt;
            print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
            exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def regrupare_soldati(n, identificari):&lt;br /&gt;
    plutoane = {}&lt;br /&gt;
    for identificare in identificari:&lt;br /&gt;
        key = tuple(sorted(str(identificare)))&lt;br /&gt;
        plutoane.setdefault(key, []).append(identificare)&lt;br /&gt;
&lt;br /&gt;
    numar_plutoane = len(plutoane)&lt;br /&gt;
    numar_max_soldati = max(len(soldati) for soldati in plutoane.values())&lt;br /&gt;
    plutoane_max_soldati = [soldati for soldati in plutoane.values() if len(soldati) == numar_max_soldati]&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;plutonout.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        f.write(str(numar_plutoane) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        f.write(str(numar_max_soldati) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        f.write(str(len(plutoane_max_soldati)) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        f.write(&amp;quot; &amp;quot;.join(map(str, plutoane_max_soldati[0])) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;plutonin.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline().strip())&lt;br /&gt;
        identificari = [int(f.readline().strip()) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
        validare_date(n, identificari)&lt;br /&gt;
        regrupare_soldati(n, identificari)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1903_-_V_Terminal&amp;diff=7769</id>
		<title>1903 - V Terminal</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1903_-_V_Terminal&amp;diff=7769"/>
		<updated>2023-12-11T09:20:17Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Andrei a făcut într-o zi un șir de N numere. În a doua zi a lăsat în acel șir doar numerele prime. În a treia zi a calculat pentru fiecare număr rămas în șir suma cifrelor, iar apoi a adunat toate aceste sume în S. După ce a obținut numărul S a început să adune toate cifrele din care este format S și tot așa până când ajunge la o cifră terminală C.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Ajutați-l pe Andrei să calculeze cifra terminală C.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare vterminalin.txt conține pe prima linie numărul N, iar pe a doua linie N numere naturale separate prin spații.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire vterminalout.txt va conține pe prima linie numărul C, reprezentând valoarea cerută.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;N&#039;&#039;&#039; &amp;amp;les; 10.000&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât 1.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; vterminalin.txt&lt;br /&gt;
: 5&lt;br /&gt;
: 4 11 24 13 97&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; vterminalout.txt&lt;br /&gt;
: 4&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Doar 11, 13 și 97 sunt prime, deci 11 + 13 + 97 = 121 &amp;lt;br&amp;gt;&lt;br /&gt;
1 + 2 + 1 = 4, deci 4 este cifra terminală&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; vterminalin.txt&lt;br /&gt;
: 105&lt;br /&gt;
: 4 11 24 13 97&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1903 - V Terminal&lt;br /&gt;
&lt;br /&gt;
def este_prim(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(numar ** 0.5) + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def suma_cifrelor(numar):&lt;br /&gt;
    return sum(int(cifra) for cifra in str(numar))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cifra_terminala(numar):&lt;br /&gt;
    while numar &amp;gt;= 10:&lt;br /&gt;
        numar = suma_cifrelor(numar)&lt;br /&gt;
    return numar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;vterminalin.txt&amp;quot;, &amp;quot;r&amp;quot;) as fisier:&lt;br /&gt;
        n = int(fisier.readline().strip())&lt;br /&gt;
        numere = list(map(int, fisier.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    if 1 &amp;lt;= n &amp;lt;= 100:&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if not (numar &amp;lt; 1000):&lt;br /&gt;
            print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
            exit(0)&lt;br /&gt;
&lt;br /&gt;
    numere_prime = [num for num in numere if este_prim(num)]&lt;br /&gt;
    suma_cifrelor_prime = sum(suma_cifrelor(num) for num in numere_prime)&lt;br /&gt;
    rezultat = cifra_terminala(suma_cifrelor_prime)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;vterminalout.txt&amp;quot;, &amp;quot;w&amp;quot;) as fisier_out:&lt;br /&gt;
        fisier_out.write(str(rezultat))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2017_-_P2017&amp;diff=7756</id>
		<title>2017 - P2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2017_-_P2017&amp;diff=7756"/>
		<updated>2023-12-10T21:43:01Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Să se răspundă la Q întrebări de forma: “Care este numărul natural minim x astfel încât cifra c să apară de cel puțin K ori în reprezentarea tuturor numerelor naturale nenule mai mici sau egale cu x?”&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare 2017in.txt conține pe prima linie numărul Q, iar pe următoarele Q linii se află câte două numere naturale c și K separate printr-un spațiu, reprezentând întrebările.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire 2017out.txt va conține Q linii, pe linia i aflându-se răspunsul la întrebarea i.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;Q&#039;&#039;&#039; &amp;amp;les; 10.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;c&#039;&#039;&#039; &amp;amp;les; 9&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;K&#039;&#039;&#039; &amp;amp;les; 10^12&lt;br /&gt;
&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; 2017in.txt&lt;br /&gt;
: 5&lt;br /&gt;
: 1 7&lt;br /&gt;
: 5 5&lt;br /&gt;
: 5 11&lt;br /&gt;
: 1 1&lt;br /&gt;
: 6 13&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; 2017out.txt&lt;br /&gt;
: 14&lt;br /&gt;
: 45&lt;br /&gt;
: 55&lt;br /&gt;
: 1&lt;br /&gt;
: 66&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Pentru prima întrebare cifra 1 apare de 7 ori în secvența 1, 10, 11, 12, 13, 14. Deci răspunsul va fi 14.&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; 2017in.txt&lt;br /&gt;
: 5&lt;br /&gt;
: 10 7&lt;br /&gt;
: 5 5&lt;br /&gt;
: 5 11&lt;br /&gt;
: 1 1&lt;br /&gt;
: 6 13&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#2017 - P2017&lt;br /&gt;
&lt;br /&gt;
def validare_date(cifra, numar_aparitii):&lt;br /&gt;
    if 1 &amp;lt;= cifra &amp;lt;= 9 and 1 &amp;lt;= numar_aparitii &amp;lt;= 10 ** 12:&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def gaseste_numarul_minim(cifra, numar_aparitii):&lt;br /&gt;
    numar = 1&lt;br /&gt;
    aparitii = 0&lt;br /&gt;
&lt;br /&gt;
    while aparitii &amp;lt; numar_aparitii:&lt;br /&gt;
        str_numar = str(numar)&lt;br /&gt;
        aparitii += str_numar.count(str(cifra))&lt;br /&gt;
        numar += 1&lt;br /&gt;
&lt;br /&gt;
    return numar - 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezolva_problema(numar_intrebari, intrebari):&lt;br /&gt;
    rezultate = []&lt;br /&gt;
&lt;br /&gt;
    for i in range(numar_intrebari):&lt;br /&gt;
        cifra, numar_aparitii = intrebari[i]&lt;br /&gt;
&lt;br /&gt;
        if validare_date(cifra, numar_aparitii):&lt;br /&gt;
            print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
            rezultat = gaseste_numarul_minim(cifra, numar_aparitii)&lt;br /&gt;
            rezultate.append(rezultat)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
            exit(0)&lt;br /&gt;
    return rezultate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Citirea datelor de intrare&lt;br /&gt;
with open(&amp;quot;2017in.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
    numar_intrebari = int(f.readline().strip())&lt;br /&gt;
    intrebari = [list(map(int, f.readline().strip().split())) for _ in range(numar_intrebari)]&lt;br /&gt;
&lt;br /&gt;
# Rezolvarea problemei&lt;br /&gt;
rezultate = rezolva_problema(numar_intrebari, intrebari)&lt;br /&gt;
&lt;br /&gt;
# Scrierea rezultatelor in fisierul de iesire&lt;br /&gt;
with open(&amp;quot;2017out.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
    for rezultat in rezultate:&lt;br /&gt;
        f.write(str(rezultat) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1466_-_Placare_1&amp;diff=7755</id>
		<title>1466 - Placare 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1466_-_Placare_1&amp;diff=7755"/>
		<updated>2023-12-10T21:34:30Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Enunț ==&lt;br /&gt;
Un perete dreptunghiular de lățime L și o înălțime foarte mare (teoretic infinită) trebuie să fie protejat la bază cu plăci dreptunghiulare de faianță, de dimensiuni A și respectiv B. Plăcile se monteză una lângă cealaltă, pe mai multe rânduri orizontale, de jos în sus, pe fiecare rând de la stânga la dreapta, TOATE plăcile fiind așezate ”în picioare” (cu latura de mărime A pe orizontală și cea de mărime B pe verticală) sau TOATE ”culcate” (cu latura de mărime B pe orizontală și cea de mărime A pe verticală). Pentru a nu se pierde material, dacă la capătul unui rând nu încape o placă întreagă, se taie din ea porțiunea necesară, porțiunea rămasă fiind folosită la începutul rândului următor.&lt;br /&gt;
&lt;br /&gt;
De exemplu, dacă peretele are lungimea L=10, iar plăcile de dimensiune A=3 și B=4 sunt așezate în picioare, atunci primul rând se completează cu porțiunea de dimensiuni 1 și 4, iar porțiunea rămasă de dimensiuni 2 și 4 este folosită pe rândul al doilea.&lt;br /&gt;
&lt;br /&gt;
Pe rândul al doilea se montează plăcile în continuare în același mod, completându-l la capăt cu o porțiune de placă, restul de placă fiind folosit pe rândul al treilea etc. până ce rândul se încheie cu o placă întreagă, nemaifiind necesară nicio completare cu o porțiune de placă. În acest moment procesul de placare se încheie.Dacă primul rând se încheie cu placă întreagă, atunci placarea se încheie cu un singur rând completat.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Cunoscând lățimea L a peretelui și dimensiunile A și B ale plăcilor de faianță, stabiliți înălțimea maximă placată care se poate obține după metoda descrisă mai sus.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Se citesc din fișierul placare1in.txt, în această ordine, L, A și B, numere naturale nenule.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
In fișierul placare1out.txt se va afișa numărul natural H reprezentând înălțimea maximă placată cu faianță.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;A, B&#039;&#039;&#039; &amp;amp;les; 20.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;L&#039;&#039;&#039; &amp;amp;les; 1.000.000.000&lt;br /&gt;
&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; placare1in.txt&lt;br /&gt;
: 10 3 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; placare1out.txt&lt;br /&gt;
: 12&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; placare1in.txt&lt;br /&gt;
: 10 3 20001&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1466 - Placare1&lt;br /&gt;
&lt;br /&gt;
def verificare_restrictii(latime_perete, latime_placa, inaltime_placa):&lt;br /&gt;
    if not (1 &amp;lt;= latime_placa &amp;lt;= 20000 and 1 &amp;lt;= inaltime_placa &amp;lt;= 20000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= latime_perete &amp;lt;= 1000000000):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def inaltime_maxima_placata(latime_perete, latime_placa, inaltime_placa):&lt;br /&gt;
    if verificare_restrictii(latime_perete, latime_placa, inaltime_placa):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
    inaltime = 0&lt;br /&gt;
    while latime_perete &amp;gt; 0:&lt;br /&gt;
        if latime_perete &amp;gt;= latime_placa:&lt;br /&gt;
            inaltime += inaltime_placa&lt;br /&gt;
            latime_perete -= latime_placa&lt;br /&gt;
        else:&lt;br /&gt;
            latime_perete = 0&lt;br /&gt;
    return inaltime&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;placare1in.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        latime_perete, latime_placa, inaltime_placa = map(int, f.readline().split())&lt;br /&gt;
&lt;br /&gt;
    rezultat = inaltime_maxima_placata(latime_perete, latime_placa, inaltime_placa)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;placare1out.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        f.write(str(rezultat))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1125_-_Overflow_2&amp;diff=7754</id>
		<title>1125 - Overflow 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1125_-_Overflow_2&amp;diff=7754"/>
		<updated>2023-12-10T21:26:17Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
După ce Gigel a rezolvat problema anterioară ( #Overflow ), profesorul nu a fost foarte mulțumit de metoda sa. Așadar, i-a dat următoarea problemă: se dau n numere naturale. Să se afle dacă numerele pot fi reprezentate pe 8 octeți, fără semn.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul n. Pe următoarele n rânduri se vor afla numerele m, urmate de m perechi de numere a b, cu semnificația de mai sus.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran pentru fiecare din cele n cazuri rezultatul dacă numărul se încadrează în tipuri de date de 8 octeți, sau Overflow! în caz contrar.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n*m&#039;&#039;&#039; &amp;amp;les; 1.000.000&lt;br /&gt;
* 0 &amp;amp;les; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;amp;les; 64&lt;br /&gt;
* &#039;&#039;&#039;a+b&#039;&#039;&#039; ≠ 0 &lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 1 2 63&lt;br /&gt;
: 1 2 64&lt;br /&gt;
: 1 666013 2&lt;br /&gt;
: 2 2 63 2 62&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
: 9223372036854775808&lt;br /&gt;
: Overflow!&lt;br /&gt;
: 443573316169&lt;br /&gt;
: 13835058055282163712&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
2^64 = 18.446.744.073.709.551.616, care nu poate fi reprezentat pe 8 octeți.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 1 0 0&lt;br /&gt;
: 1 2 64&lt;br /&gt;
: 1 666013 2&lt;br /&gt;
: 2 2 62 2 63&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1125 - Overflow2&lt;br /&gt;
&lt;br /&gt;
def este_rezultat_valid(rezultat):&lt;br /&gt;
    max_intreg_fara_semn_64 = 2 ** 64 - 1&lt;br /&gt;
    return 0 &amp;lt;= rezultat &amp;lt;= max_intreg_fara_semn_64&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def sunt_date_intrare_valide(n, m, perechi):&lt;br /&gt;
    if 1 &amp;lt;= n * m &amp;lt;= 1000000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
    for i in range(0, 2 * m, 2):&lt;br /&gt;
        a, b = perechi[i], perechi[i + 1]&lt;br /&gt;
        if not (0 &amp;lt;= a &amp;lt;= 18446744073709551615) or not (0 &amp;lt;= b &amp;lt;= 64) or (a + b == 0):&lt;br /&gt;
            print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
            exit(0)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculeaza_suma(n, date):&lt;br /&gt;
    rezultate = []&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        m, *perechi = map(int, date[i])&lt;br /&gt;
&lt;br /&gt;
        if sunt_date_intrare_valide(n, m, perechi):&lt;br /&gt;
            suma_totala = 0&lt;br /&gt;
            for j in range(0, 2 * m, 2):&lt;br /&gt;
                a, b = perechi[j], perechi[j + 1]&lt;br /&gt;
                suma_totala += a ** b&lt;br /&gt;
&lt;br /&gt;
            if este_rezultat_valid(suma_totala):&lt;br /&gt;
                rezultate.append(suma_totala)&lt;br /&gt;
            else:&lt;br /&gt;
                rezultate.append(&amp;quot;Overflow!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return rezultate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    date_intrare = [list(map(int, input().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    rezultate = calculeaza_suma(n, date_intrare)&lt;br /&gt;
&lt;br /&gt;
    for rezultat in rezultate:&lt;br /&gt;
        print(rezultat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1943_-_Bacterie&amp;diff=7753</id>
		<title>1943 - Bacterie</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1943_-_Bacterie&amp;diff=7753"/>
		<updated>2023-12-10T21:00:24Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
O echipă de arheologi a descoperit o hartă străveche a Ținutului de Nord, care era locuit de o civilizație condusă după reguli matematice foarte riguroase. Conform acestei hărți, Ținutul de Nord era împărțit în n rânduri a câte m comitate, fiecare comitat ocupând o suprafață pătrată de un hectar.&lt;br /&gt;
&lt;br /&gt;
Însă descoperirile au mai arătat că această civilizație a fost atacată de la sud-vest de o bacterie periculoasă, ce a acționat astfel: în primul an, a infectat comitatul din colțul din stânga jos al hărții, în al doilea an a infectat cele două comitate vecine cu primul, în al treilea an a infectat cele trei comitate vecine cu anterioarele două și așa mai departe, infecția oprindu-se când bacteria a ajuns la marginea de sus sau la marginea din dreapta a hărții&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieţi un program care să determine numărul de comitate rămase neinfectate după oprirea expansiunii bacteriei.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare bacteriein.txt conține separate printr-un spaţiu, n și m, dimensiunile hărții.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire bacterieout.txt va conține numărul de comitate rămase neinfectate după oprirea expansiunii bacteriei.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 1.000.000.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;m&#039;&#039;&#039; &amp;amp;les; 1.000.000.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; bacteriein.txt&lt;br /&gt;
: 3 5 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; bacterieout.txt&lt;br /&gt;
: 9&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Harta Ținutului de Nord cuprinde 3 rânduri a câte 5 comitate fiecare, având în total 15 comitate. Expansiunea bacteriei s-a oprit după 3 ani, deoarece a atins marginea de sus; au rămas 9 comitate neinfectate.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; bacteriein.txt&lt;br /&gt;
: 1000000001 1000000001&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor 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;
#1943 - Bacterie&lt;br /&gt;
def verifica_restrictii(n, m):&lt;br /&gt;
    if 1 &amp;lt;= n &amp;lt;= 1000000000 and 1 &amp;lt;= m &amp;lt;= 1000000000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_comitate_ramase_neinfectate(n, m):&lt;br /&gt;
    verifica_restrictii(n, m)&lt;br /&gt;
&lt;br /&gt;
    total_comitate = n * m&lt;br /&gt;
    infectate = 0&lt;br /&gt;
    an = 1&lt;br /&gt;
&lt;br /&gt;
    while an &amp;lt;= n:&lt;br /&gt;
        infectate += an  # comitate infectate într-un an&lt;br /&gt;
        an += 1&lt;br /&gt;
    comitate_ramase = total_comitate - infectate&lt;br /&gt;
    return comitate_ramase&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Citire din fișierul de intrare&lt;br /&gt;
with open(&amp;quot;bacteriein.txt&amp;quot;, &amp;quot;r&amp;quot;) as file_in:&lt;br /&gt;
    n, m = map(int, file_in.readline().split())&lt;br /&gt;
&lt;br /&gt;
# Calcul și scriere în fișierul de ieșire&lt;br /&gt;
with open(&amp;quot;bacterieout.txt&amp;quot;, &amp;quot;w&amp;quot;) as file_out:&lt;br /&gt;
    rezultat = numar_comitate_ramase_neinfectate(n, m)&lt;br /&gt;
    file_out.write(str(rezultat))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3734_-_Formula1&amp;diff=7752</id>
		<title>3734 - Formula1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3734_-_Formula1&amp;diff=7752"/>
		<updated>2023-12-10T20:57:47Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
La o cursă de Formula 1, fiecare echipă participantă își construiește propria mașină cu care va concura. Numerotarea mașinilor în concurs este realizată de organizatori cu ajutorul unor stegulețe pătrate ce conțin alternativ, pe fiecare rând (pe orizontală și verticală), pătrățele albe și negre de dimensiuni identice. În figura următoare sunt prezentate, în ordine, stegulețele primelor 4 mașini din concurs. Observăm că fiecare steguleț are cu două rânduri (pe orizontală și verticală) mai mult decât stegulețul precedent, iar în toate cele patru colțuri ale oricărui steguleț se află un pătrățel negru.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieți un program care citește două numere naturale K și N și determină:&amp;lt;br&amp;gt;&lt;br /&gt;
1. Câte pătrățele albe și negre sunt în total pe stegulețul mașinii cu numărul K; &amp;lt;br&amp;gt;&lt;br /&gt;
2. Notând cu A numărul total de pătrățele albe de pe stegulețele primelor N mașini din concurs, câte pătrățele albe și negre sunt în total pe cel mai mare steguleț care conține cel mult A pătrățele albe.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare formula1in.txt conține pe prima linie un număr natural C. Pentru toate testele de intrare, numărul C poate avea doar valoarea 1 sau valoarea 2 și reprezintă numărul cerinței care trebuie rezolvată. Pe a doua linie a fișierului formula1.in se găsesc, în ordine, numerele naturale K și N.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Dacă C = 1, se va rezolva cerința 1. În acest caz, fișierul de ieșire formula1.out va conține pe prima linie un număr natural reprezentând numărul total de pătrățele existente pe stegulețul mașinii cu numărul K. Dacă C = 2, se va rezolva cerința 2. În acest caz, fișierul de ieșire formula1out.txt va conține pe prima linie un număr natural reprezentând numărul total de pătrățele existente pe cel mai mare steguleț ce conține cel mult A pătrățele albe.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;K&#039;&#039;&#039; &amp;amp;les; 100.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;N&#039;&#039;&#039; &amp;amp;les; 500.000&lt;br /&gt;
&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; formula1in.txt&lt;br /&gt;
: 1&lt;br /&gt;
: 3 4  &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; formula1out.txt&lt;br /&gt;
: 25&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Se rezolvă prima cerință și se va folosi doar valoarea K. Stegulețul celei de-a treia mașini are în total 25 de pătrățele albe și negre.&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; formula1in.txt&lt;br /&gt;
: 2&lt;br /&gt;
: 3 4 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; formula1out.txt&lt;br /&gt;
: 81&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Se rezolvă a doua cerință și se va folosi doar valoarea N. Pe stegulețele primelor 4 mașini apar în total 0 + 4 + 12 + 24 = 40 pătrățele albe. Cel mai mare steguleț care conține cel mult 40 de pătrățele albe aparține mașinii cu numărul 5 care are în total 81 de pătrățele.&lt;br /&gt;
&lt;br /&gt;
== Exemplu 3 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; formula1in.txt&lt;br /&gt;
: 1 &lt;br /&gt;
: 100001 500001   &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor 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;
#3734 - Formula1&lt;br /&gt;
&lt;br /&gt;
def verifica_restrictii(numarul_masinii, primele_masini_din_concurs):&lt;br /&gt;
    if 1 &amp;lt;= numarul_masinii &amp;lt;= 100000 and 1 &amp;lt;= primele_masini_din_concurs &amp;lt;= 500000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_patratele(numarul_masinii):&lt;br /&gt;
    return (numarul_masinii+(numarul_masinii-1))**2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cel_mai_mare_stegulet(numarul_de_patratele_albe):&lt;br /&gt;
    i = 1&lt;br /&gt;
    while numar_patratele(i) &amp;lt;= numarul_de_patratele_albe:&lt;br /&gt;
        i += 1&lt;br /&gt;
    return numar_patratele(i-1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezolva_cerinta_1(numarul_masinii):&lt;br /&gt;
    return numar_patratele(numarul_masinii)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezolva_cerinta_2(primele_masini_din_concurs):&lt;br /&gt;
    total_patrate_albe = 0&lt;br /&gt;
    for i in range(1, primele_masini_din_concurs + 1):&lt;br /&gt;
        total_patrate_albe += numar_patratele(i)&lt;br /&gt;
    return cel_mai_mare_stegulet(total_patrate_albe)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    rezultat = 0&lt;br /&gt;
    with open(&amp;quot;formula1in.txt&amp;quot;, &amp;quot;r&amp;quot;) as file_in:&lt;br /&gt;
        caz = int(file_in.readline().strip())&lt;br /&gt;
        numarul_masinii, primele_masini_din_concurs = map(int, file_in.readline().split())&lt;br /&gt;
&lt;br /&gt;
    verifica_restrictii(numarul_masinii, primele_masini_din_concurs)&lt;br /&gt;
&lt;br /&gt;
    if caz == 1:&lt;br /&gt;
        rezultat = rezolva_cerinta_1(numarul_masinii)&lt;br /&gt;
    elif caz == 2:&lt;br /&gt;
        rezultat = rezolva_cerinta_2(primele_masini_din_concurs)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;formula1out.txt&amp;quot;, &amp;quot;w&amp;quot;) as file_out:&lt;br /&gt;
        file_out.write(str(rezultat))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1943_-_Bacterie&amp;diff=7751</id>
		<title>1943 - Bacterie</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1943_-_Bacterie&amp;diff=7751"/>
		<updated>2023-12-10T20:47:04Z</updated>

		<summary type="html">&lt;p&gt;Vasiliu Costel Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
O echipă de arheologi a descoperit o hartă străveche a Ținutului de Nord, care era locuit de o civilizație condusă după reguli matematice foarte riguroase. Conform acestei hărți, Ținutul de Nord era împărțit în n rânduri a câte m comitate, fiecare comitat ocupând o suprafață pătrată de un hectar.&lt;br /&gt;
&lt;br /&gt;
Însă descoperirile au mai arătat că această civilizație a fost atacată de la sud-vest de o bacterie periculoasă, ce a acționat astfel: în primul an, a infectat comitatul din colțul din stânga jos al hărții, în al doilea an a infectat cele două comitate vecine cu primul, în al treilea an a infectat cele trei comitate vecine cu anterioarele două și așa mai departe, infecția oprindu-se când bacteria a ajuns la marginea de sus sau la marginea din dreapta a hărții&lt;br /&gt;
&lt;br /&gt;
;Scrieţi un program care să determine numărul de comitate rămase neinfectate după oprirea expansiunii bacteriei.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare bacteriein.txt conține separate printr-un spaţiu, n și m, dimensiunile hărții.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire bacterieout.txt va conține numărul de comitate rămase neinfectate după oprirea expansiunii bacteriei.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 1.000.000.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;m&#039;&#039;&#039; &amp;amp;les; 1.000.000.000&lt;br /&gt;
&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; bacteriein.txt&lt;br /&gt;
: 3 5 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; bacterieout.txt&lt;br /&gt;
: 9&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; bacteriein.txt&lt;br /&gt;
: 1000000001 1000000001&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor 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;
#1943 - Bacterie&lt;br /&gt;
def verifica_restrictii(n, m):&lt;br /&gt;
    if 1 &amp;lt;= n &amp;lt;= 1000000000 and 1 &amp;lt;= m &amp;lt;= 1000000000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_comitate_ramase_neinfectate(n, m):&lt;br /&gt;
    verifica_restrictii(n, m)&lt;br /&gt;
&lt;br /&gt;
    total_comitate = n * m&lt;br /&gt;
    infectate = 0&lt;br /&gt;
    an = 1&lt;br /&gt;
&lt;br /&gt;
    while an &amp;lt;= n:&lt;br /&gt;
        infectate += an  # comitate infectate într-un an&lt;br /&gt;
        an += 1&lt;br /&gt;
    comitate_ramase = total_comitate - infectate&lt;br /&gt;
    return comitate_ramase&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Citire din fișierul de intrare&lt;br /&gt;
with open(&amp;quot;bacteriein.txt&amp;quot;, &amp;quot;r&amp;quot;) as file_in:&lt;br /&gt;
    n, m = map(int, file_in.readline().split())&lt;br /&gt;
&lt;br /&gt;
# Calcul și scriere în fișierul de ieșire&lt;br /&gt;
with open(&amp;quot;bacterieout.txt&amp;quot;, &amp;quot;w&amp;quot;) as file_out:&lt;br /&gt;
    rezultat = numar_comitate_ramase_neinfectate(n, m)&lt;br /&gt;
    file_out.write(str(rezultat))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
</feed>