<?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=Corjuc+Eunice</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=Corjuc+Eunice"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/wiki/Special:Contributions/Corjuc_Eunice"/>
	<updated>2026-05-01T04:31:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1730_-_S_Stabil&amp;diff=9025</id>
		<title>1730 - S Stabil</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1730_-_S_Stabil&amp;diff=9025"/>
		<updated>2024-01-04T21:18:58Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Numim număr sstabil orice număr natural care este format dintr-o singură cifră sau care are suma oricăror două cifre vecine strict mai mare decât nouă.  Asupra oricărui număr care nu este sstabil se pot efectua operaţii de înlocuire a oricăror două cifre vecine care au suma strict mai mică decât zece cu o cifră egală cu suma lor.  Operaţiile de înlocuire pot fi aplicate, în acelaşi condiţii, şi asupra numerelor rezultate după fiecare înlocuire, de c...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Numim număr sstabil orice număr natural care este format dintr-o singură cifră sau care are suma oricăror două cifre vecine strict mai mare decât nouă.&lt;br /&gt;
&lt;br /&gt;
Asupra oricărui număr care nu este sstabil se pot efectua operaţii de înlocuire a oricăror două cifre vecine care au suma strict mai mică decât zece cu o cifră egală cu suma lor.&lt;br /&gt;
&lt;br /&gt;
Operaţiile de înlocuire pot fi aplicate, în acelaşi condiţii, şi asupra numerelor rezultate după fiecare înlocuire, de câte ori este nevoie, până când se obţine un număr sstabil.&lt;br /&gt;
&lt;br /&gt;
De exemplu, &amp;lt;code&amp;gt;291&amp;lt;/code&amp;gt; este număr sstabil deoarece &amp;lt;code&amp;gt;2+9&amp;gt;9&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;9+1&amp;gt;9&amp;lt;/code&amp;gt;, iar &amp;lt;code&amp;gt;183&amp;lt;/code&amp;gt; nu este sstabil pentru că &amp;lt;code&amp;gt;1+8&amp;lt;10&amp;lt;/code&amp;gt;. Din numărul &amp;lt;code&amp;gt;2453&amp;lt;/code&amp;gt;, efectuând o singură înlocuire, putem obţine &amp;lt;code&amp;gt;653&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;293&amp;lt;/code&amp;gt; (număr sstabil) sau &amp;lt;code&amp;gt;248&amp;lt;/code&amp;gt;. Numărul &amp;lt;code&amp;gt;653&amp;lt;/code&amp;gt;, nefiind sstabil, permite o nouă operaţie de înlocuire, obţinând astfel numărul &amp;lt;code&amp;gt;68&amp;lt;/code&amp;gt;, care este sstabil. Analog, din numărul &amp;lt;code&amp;gt;248&amp;lt;/code&amp;gt; se poate obţine numărul sstabil &amp;lt;code&amp;gt;68&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieţi un program care să determine cel mai mare număr natural sstabil care se poate obţine dintr-un număr natural dat, aplicând una sau mai multe operaţii de înlocuire de tipul menţionat.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie un număr natural &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, reprezentând numărul de cifre al numărului dat, iar pe linia a doua, separate prin câte un spaţiu, cifrele acestui număr.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine pe o linie numărul sstabil maxim obţinut.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
1 0 4 5 1&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
191&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
10451 → 1091 → 191.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
5 2 8 3 2&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
785&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;52832 → 7832 → 785&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999999999&lt;br /&gt;
&lt;br /&gt;
1 2 3 4 5&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=1000000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as input_file, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as output_file:&lt;br /&gt;
    n = int(input_file.readline())&lt;br /&gt;
    ver(n)&lt;br /&gt;
    a = list(map(int, input_file.readline().split()))&lt;br /&gt;
    b = [0] * 1000005&lt;br /&gt;
&lt;br /&gt;
    k = 0&lt;br /&gt;
    r = n&lt;br /&gt;
&lt;br /&gt;
    while r &amp;gt; 0:&lt;br /&gt;
        j = r&lt;br /&gt;
        s = 0&lt;br /&gt;
&lt;br /&gt;
        while j &amp;gt; 0 and s &amp;lt; 10:&lt;br /&gt;
            s += a[j - 1]&lt;br /&gt;
            j -= 1&lt;br /&gt;
&lt;br /&gt;
        k += 1&lt;br /&gt;
&lt;br /&gt;
        if s &amp;lt; 10:&lt;br /&gt;
            b[k] = s&lt;br /&gt;
            r = j&lt;br /&gt;
        else:&lt;br /&gt;
            if k == 1:&lt;br /&gt;
                p = r&lt;br /&gt;
                t = a[p - 1]&lt;br /&gt;
&lt;br /&gt;
                while s - t &amp;gt;= 10:&lt;br /&gt;
                    p -= 1&lt;br /&gt;
                    t += a[p - 1]&lt;br /&gt;
&lt;br /&gt;
                b[k] = t&lt;br /&gt;
                r = p - 1&lt;br /&gt;
            else:&lt;br /&gt;
                p = r&lt;br /&gt;
                t = a[p - 1]&lt;br /&gt;
&lt;br /&gt;
                while s - t &amp;gt; 9 or t + b[k - 1] &amp;lt; 10:&lt;br /&gt;
                    p -= 1&lt;br /&gt;
                    t += a[p - 1]&lt;br /&gt;
&lt;br /&gt;
                b[k] = t&lt;br /&gt;
                r = p - 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(k, 0, -1):&lt;br /&gt;
        print(b[i], end=&amp;quot;&amp;quot;, file=output_file)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1656_-_Unu_Zero&amp;diff=9022</id>
		<title>1656 - Unu Zero</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1656_-_Unu_Zero&amp;diff=9022"/>
		<updated>2024-01-04T20:53:57Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Se consideră un şir format din &amp;lt;code&amp;gt;N+2&amp;lt;/code&amp;gt; cifre binare, care conţine cel puţin o cifră &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; şi cel puţin trei cifre &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;; prima şi ultima cifră a şirului sunt &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.  Numim &amp;lt;code&amp;gt;1-secvenţă&amp;lt;/code&amp;gt; o succesiune formată numai din cifre &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, aflate pe poziţii consecutive în acest şir, delimitată de câte o cifră &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.  Corina construieşte un astfel de şir, în care numărul de cifre &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; ale fi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră un şir format din &amp;lt;code&amp;gt;N+2&amp;lt;/code&amp;gt; cifre binare, care conţine cel puţin o cifră &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; şi cel puţin trei cifre &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;; prima şi ultima cifră a şirului sunt &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Numim &amp;lt;code&amp;gt;1-secvenţă&amp;lt;/code&amp;gt; o succesiune formată numai din cifre &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, aflate pe poziţii consecutive în acest şir, delimitată de câte o cifră &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Corina construieşte un astfel de şir, în care numărul de cifre &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; ale fiecărei &amp;lt;code&amp;gt;1-secvenţe&amp;lt;/code&amp;gt; să fie cuprins între două numere naturale date, &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;p ≤ q&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieţi un program care să determine un număr natural &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, egal cu restul împărţirii la &amp;lt;code&amp;gt;666013&amp;lt;/code&amp;gt; a numărului de şiruri distincte, de tipul celui construit de Corina.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, iar pe cea de a doua linie numerele naturale &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt; ( &amp;lt;code&amp;gt;p ≤ q&amp;lt;/code&amp;gt; ), separate printr-un spaţiu.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine pe prima linie numărul natural &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; cerut.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ p ≤ q &amp;lt; N &amp;lt; 1.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
2 3&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0000110&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0001100&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0001110&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0011000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0011100&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0110000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0110110&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0111000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
999999999&lt;br /&gt;
&lt;br /&gt;
2 3&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
mod = 666013&lt;br /&gt;
&lt;br /&gt;
def ver(n, p, q):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=1000000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    if not(1&amp;lt;=p&amp;lt;=1000000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    if not(1&amp;lt;=q&amp;lt;=1000000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    if not(p&amp;gt;=q):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    if not(q&amp;gt;=n):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as in_file, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as out_file:&lt;br /&gt;
        &lt;br /&gt;
        n=int(in_file.readline().strip())&lt;br /&gt;
        a, b = map(int, in_file.readline().split())&lt;br /&gt;
&lt;br /&gt;
        ver(n,a, b)&lt;br /&gt;
        &lt;br /&gt;
        z = [0] * (n + 1)&lt;br /&gt;
        s = [0] * (n + 1)&lt;br /&gt;
        u = [0] * (n + 1)&lt;br /&gt;
&lt;br /&gt;
        z[0] = 1&lt;br /&gt;
        s[0] = 1&lt;br /&gt;
&lt;br /&gt;
        for i in range(1, n + 1):&lt;br /&gt;
            z[i] = z[i - 1] + u[i - 1]  # daca punem 0&lt;br /&gt;
            z[i] %= mod&lt;br /&gt;
&lt;br /&gt;
            if i - a &amp;gt;= 0:&lt;br /&gt;
                if i - b - 1 &amp;gt;= 0:&lt;br /&gt;
                    u[i] = s[i - a] - s[i - b - 1]&lt;br /&gt;
                else:&lt;br /&gt;
                    u[i] = s[i - a]&lt;br /&gt;
&lt;br /&gt;
            if u[i] &amp;lt; 0:&lt;br /&gt;
                u[i] += mod&lt;br /&gt;
            u[i] %= mod&lt;br /&gt;
&lt;br /&gt;
            s[i] = s[i - 1] + z[i]&lt;br /&gt;
            s[i] %= mod&lt;br /&gt;
&lt;br /&gt;
        result = (z[n] + u[n] - 1 + (z[n] + u[n] - 1 &amp;lt; 0) * mod) % mod&lt;br /&gt;
        out_file.write(str(result) + &#039;\n&#039;)&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>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1537_-_7_Segmente&amp;diff=9020</id>
		<title>1537 - 7 Segmente</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1537_-_7_Segmente&amp;diff=9020"/>
		<updated>2024-01-04T20:47:01Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Un indicator cu &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; segmente este un dispozitiv de afişaj electronic destinat afişării unei cifre zecimale. Aceste dispozitive sunt utilizate pe scară largă în ceasuri digitale, contoare electronice şi alte aparate, pentru afişarea informaţiilor numerice. Cele &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; segmente au fost notate cu literele &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;e&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;, după modelul din figura de mai jos....&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Un indicator cu &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; segmente este un dispozitiv de afişaj electronic destinat afişării unei cifre zecimale. Aceste dispozitive sunt utilizate pe scară largă în ceasuri digitale, contoare electronice şi alte aparate, pentru afişarea informaţiilor numerice. Cele &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; segmente au fost notate cu literele &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;e&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;, după modelul din figura de mai jos.&lt;br /&gt;
&lt;br /&gt;
Proiectarea diverselor sisteme de afişaj trebuie să ţină cont şi de puterea necesară pentru afişarea unei cifre. Pentru aprinderea unui segment este necesară o putere de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; mW. Astfel, în funcţie de cifra afişată, dispozitivul necesită o putere egală cu numărul de segmente aprinse la afişarea cifrei respective. Puterea necesară pentru afişarea unui număr natural este egală cu suma puterilor necesare afişării fiecăreia dintre cifrele sale.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Să se scrie un program care citeşte două numere naturale nenule &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;, (numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; având toate cifrele nenule)şi calculează:&lt;br /&gt;
&lt;br /&gt;
* numărul natural &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; reprezentând puterea necesară pentru afişarea numărului &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;;&lt;br /&gt;
* cel mai mare număr natural &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt;, format numai din cifre nenule, mai mic sau egal decât &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, care necesită pentru afişare o putere de cel mult &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; mW.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Prima linie a fişierului de intrare &amp;lt;code&amp;gt;input.txt conţine&amp;lt;/code&amp;gt; două numere naturale nenule &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;, (numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; având toate cifrele nenule), despărţite printr-un spaţiu, cu semnificaţia de mai sus.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine pe o singură linie, cele două numere naturale nenule &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; (numărul &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; având toate cifrele nenule), separate printr-un spaţiu, cu semnificaţia de mai sus.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n &amp;lt; 10**19&amp;lt;/code&amp;gt;;&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ p ≤ 150&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
7654 12&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
18 7511&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Numărul n este &amp;lt;code&amp;gt;7654&amp;lt;/code&amp;gt;; puterea necesară pentru afişare este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;18&amp;lt;/code&amp;gt; mW, iar cel mai mare număr, mai mic sau egal cu &amp;lt;code&amp;gt;7654&amp;lt;/code&amp;gt;, format numai din cifre nenule, care necesită pentru afişare o putere de cel mult &amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt; mW, este &amp;lt;code&amp;gt;7511&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
7654 9999&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n,p):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=10**19):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    if not(2&amp;lt;=p&amp;lt;=150):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
        v = [0] * 20&lt;br /&gt;
        t = [0] * 20&lt;br /&gt;
        p = 0&lt;br /&gt;
&lt;br /&gt;
        pw = [6, 2, 5, 5, 4, 5, 6, 3, 7, 6]&lt;br /&gt;
&lt;br /&gt;
        n, p = map(int, f.readline().split())&lt;br /&gt;
&lt;br /&gt;
        ver(n,p)&lt;br /&gt;
&lt;br /&gt;
        pc = 0&lt;br /&gt;
        i = 0&lt;br /&gt;
        nc = 0&lt;br /&gt;
        aux = 0&lt;br /&gt;
        dmin = 0&lt;br /&gt;
        dmax = 0&lt;br /&gt;
        cifra = 0&lt;br /&gt;
        egalcif = 1&lt;br /&gt;
&lt;br /&gt;
        v[0] = 0&lt;br /&gt;
        i = 0&lt;br /&gt;
        while n &amp;gt; 0:&lt;br /&gt;
            i += 1&lt;br /&gt;
            v[i] = n % 10&lt;br /&gt;
            case_dict = {1: 2, 2: 5, 3: 5, 4: 4, 5: 5, 6: 6, 7: 3, 8: 7, 9: 6}&lt;br /&gt;
            pc += case_dict.get(n % 10, 0)&lt;br /&gt;
            n //= 10&lt;br /&gt;
        v[0] = i&lt;br /&gt;
        g.write(f&amp;quot;{pc} &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        for i in range(1, v[0] // 2 + 1):&lt;br /&gt;
            aux = v[i]&lt;br /&gt;
            v[i] = v[v[0] + 1 - i]&lt;br /&gt;
            v[v[0] + 1 - i] = aux&lt;br /&gt;
&lt;br /&gt;
        nc = p // 2&lt;br /&gt;
        nc = min(nc, v[0])&lt;br /&gt;
&lt;br /&gt;
        for i in range(1, nc + 1):&lt;br /&gt;
            t[i] = 1&lt;br /&gt;
&lt;br /&gt;
        p = p - 2 * nc&lt;br /&gt;
        t[0] = nc&lt;br /&gt;
        cc = 1&lt;br /&gt;
        egalcif = 1&lt;br /&gt;
        while p &amp;gt; 0 and cc &amp;lt;= t[0]:&lt;br /&gt;
            dmin = 10&lt;br /&gt;
            cifra = 1&lt;br /&gt;
            dmax = 0&lt;br /&gt;
&lt;br /&gt;
            for i in range(2, 10):&lt;br /&gt;
                if t[0] == v[0] and egalcif == 1:&lt;br /&gt;
                    if i &amp;lt;= v[cc] and abs(i - v[cc]) &amp;lt;= dmin and p - pw[i] + pw[1] &amp;gt;= 0:&lt;br /&gt;
                        cifra = i&lt;br /&gt;
                        dmin = abs(i - v[cc])&lt;br /&gt;
                if t[0] &amp;lt; v[0] or egalcif == 0:&lt;br /&gt;
                    if i &amp;gt;= dmax and p - pw[i] + pw[1] &amp;gt;= 0:&lt;br /&gt;
                        cifra = i&lt;br /&gt;
                        dmax = i&lt;br /&gt;
&lt;br /&gt;
            if v[cc] - cifra != 0:&lt;br /&gt;
                egalcif = 0&lt;br /&gt;
&lt;br /&gt;
            p += pw[1]&lt;br /&gt;
            p -= pw[cifra]&lt;br /&gt;
            t[cc] = cifra&lt;br /&gt;
            cc += 1&lt;br /&gt;
&lt;br /&gt;
        for i in range(1, t[0] + 1):&lt;br /&gt;
            g.write(str(t[i]))&lt;br /&gt;
&lt;br /&gt;
        g.write(&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>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0965_-_Joc_3&amp;diff=9019</id>
		<title>0965 - Joc 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0965_-_Joc_3&amp;diff=9019"/>
		<updated>2024-01-04T20:40:41Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Rareş şi Bogdan vor să facă mişcare în aer liber aşa că s-au gândit la un nou joc.  Pe terenul de fotbal, ei au desenat două cercuri concentrice (cu acelaşi centru) şi au împărţit pista cuprinsă între cele două cercuri în &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; sectoare congruente, ca în desenul de mai jos unde &amp;lt;code&amp;gt;n=16&amp;lt;/code&amp;gt;.  Ei au etichetat cele n sectoare cu numerele distincte de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, în ordinea acelor de ceasornic. Au stabilit ca jocul să...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rareş şi Bogdan vor să facă mişcare în aer liber aşa că s-au gândit la un nou joc.&lt;br /&gt;
&lt;br /&gt;
Pe terenul de fotbal, ei au desenat două cercuri concentrice (cu acelaşi centru) şi au împărţit pista cuprinsă între cele două cercuri în &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; sectoare congruente, ca în desenul de mai jos unde &amp;lt;code&amp;gt;n=16&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ei au etichetat cele n sectoare cu numerele distincte de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, în ordinea acelor de ceasornic. Au stabilit ca jocul să se desfăşoare astfel:&lt;br /&gt;
&lt;br /&gt;
* Se vor aşeza amândoi în sectorul numerotat cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, spate în spate.&lt;br /&gt;
* Prin sărituri executate simultan în anumite sectoare, copii se vor deplasa pe pistă în sensuri contrare. Bogdan se va deplasa în sensul acelor de ceasornic iar Rareş în sensul contrar. Copii vor executa un număr egal de sărituri.&lt;br /&gt;
* O săritură a lui Bogdan are efect deplasarea acestuia din sectorul curent, în sensul acelor de ceasornic, direct în cel de-al &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;-lea sector de pe pistă. De exemplu, dacă &amp;lt;code&amp;gt;n=16&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;x=2&amp;lt;/code&amp;gt; atunci, pornind din sectorul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, Bogdan se va deplasa sărind succesiv, în această ordine, în sectoarele etichetate cu: &amp;lt;code&amp;gt;3,5,7,9,...&amp;lt;/code&amp;gt;&lt;br /&gt;
* O săritură a lui Rareş are efect deplasarea acestuia din sectorul curent, în sens contrar acelor de ceasornic, direct în cel de-al &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;-lea sector de pe pistă. De exemplu, dacă &amp;lt;code&amp;gt;n=16&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;y=3&amp;lt;/code&amp;gt; atunci, pornind din sectorul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, Rareş se va deplasa sărind succesiv, în această ordine, în sectoarele: &amp;lt;code&amp;gt;14,11,8,5,...&amp;lt;/code&amp;gt;&lt;br /&gt;
* Jocul se termină când cei doi copii ajung în urma săriturilor într-un acelaşi sector de pe pistă sau dacă unul din cei doi copii ajunge pentru a doua oară într-un acelaşi sector.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieţi un program care să citească cele trei numere naturale nenule &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;, şi apoi să determine:&lt;br /&gt;
&lt;br /&gt;
a) numărul &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; al sectoarelor de pe pistă prin care nu trece niciunul din cei doi copii în urma săriturilor executate până la terminarea jocului;&lt;br /&gt;
&lt;br /&gt;
b) numărul &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; de sărituri executate de fiecare copil până la terminarea jocului;&lt;br /&gt;
&lt;br /&gt;
c) etichetele &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; ale sectoarelor în care ajung cei doi copii la terminarea jocului (Bogdan ajunge la finalul jocului în sectorul cu eticheta &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, iar Rareş în cel cu eticheta &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține conţine pe prima linie trei numere naturale &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;, separate prin câte un spaţiu, cu semnificaţia din enunţ.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie cele patru numere naturale determinate de program: &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;, separate prin câte un spaţiu, în această ordine, cu semnificaţia din enunţ.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;20 ≤ n ≤ 30000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
16 2 3&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
4 8 1 9&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Cei doi copii, executând simultan sărituri, trec până la terminarea jocului prin sectoarele:&lt;br /&gt;
&lt;br /&gt;
Jocul se termină după &amp;lt;code&amp;gt;s=8&amp;lt;/code&amp;gt; sărituri deoarece Bodgan ajunge din nou în sectorul cu eticheta cu &amp;lt;code&amp;gt;b=1&amp;lt;/code&amp;gt;. La finalul jocului Rareş se află în sectorul cu eticheta cu &amp;lt;code&amp;gt;r=9&amp;lt;/code&amp;gt;. Cei doi copii nu au trecut prin &amp;lt;code&amp;gt;t=4&amp;lt;/code&amp;gt; sectoare ale căror etichete sunt: &amp;lt;code&amp;gt;4,6,10,16&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
16 6 2&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
12 2 13 13&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Cei doi copii, executând simultan sărituri, trec până la terminarea jocului prin sectoarele:&lt;br /&gt;
&lt;br /&gt;
Jocul se termină după &amp;lt;code&amp;gt;s=2&amp;lt;/code&amp;gt; sărituri deoarece Bodgan şi Rareş ajung amândoi în sectorul cu eticheta cu &amp;lt;code&amp;gt;b=r=13&amp;lt;/code&amp;gt;. Cei doi copii nu au trecut prin &amp;lt;code&amp;gt;t=12&amp;lt;/code&amp;gt; sectoare ale căror etichete sunt: &amp;lt;code&amp;gt;2,3,4,5,6,8,9,10,11,12,14,16&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
99999999999 6 2&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare: ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n):&lt;br /&gt;
    if not(20&amp;lt;=n&amp;lt;=30000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        with open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
            v = [0] * 40001&lt;br /&gt;
            n, x, y = map(int, f.readline().split())&lt;br /&gt;
            ver(n)&lt;br /&gt;
            t = 0&lt;br /&gt;
            s = 0&lt;br /&gt;
            b = 1&lt;br /&gt;
            r = 1&lt;br /&gt;
            v[1] = 11&lt;br /&gt;
            t = n - 1&lt;br /&gt;
&lt;br /&gt;
            while True:&lt;br /&gt;
                s += 1&lt;br /&gt;
                b += x&lt;br /&gt;
                r -= y&lt;br /&gt;
&lt;br /&gt;
                if r &amp;lt; 1:&lt;br /&gt;
                    r += n&lt;br /&gt;
&lt;br /&gt;
                if b &amp;gt; n:&lt;br /&gt;
                    b -= n&lt;br /&gt;
&lt;br /&gt;
                if v[b] == 0:&lt;br /&gt;
                    t -= 1&lt;br /&gt;
&lt;br /&gt;
                if v[r] == 0 and b != r:&lt;br /&gt;
                    t -= 1&lt;br /&gt;
&lt;br /&gt;
                v[b] += 1&lt;br /&gt;
                v[r] += 10&lt;br /&gt;
&lt;br /&gt;
                if b == r or v[r] // 10 == 2 or v[b] % 10 == 2:&lt;br /&gt;
                    break&lt;br /&gt;
&lt;br /&gt;
            g.write(f&amp;quot;{t} {s} {b} {r}\n&amp;quot;)&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>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2192_-_Talent&amp;diff=9017</id>
		<title>2192 - Talent</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2192_-_Talent&amp;diff=9017"/>
		<updated>2024-01-04T20:33:57Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: &amp;#039;&amp;#039;Românii au talent!&amp;#039;&amp;#039; Atraşi de marele premiu oferit de organizatorii concursului &amp;#039;&amp;#039;Românii au talent&amp;#039;&amp;#039;, la preselecţia organizată la Piatra Neamţ au venit foarte mulţi români să demonstreze că au talent.  La înscriere, fiecare participant a primit câte un număr de concurs, reprezentat de un număr natural nenul. Unii dintre participanţi pot avea statut special, fiind admişi direct în semifinale, ca urmare a rezultatelor deosebite obţinute la ediţiile anter...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Românii au talent!&#039;&#039; Atraşi de marele premiu oferit de organizatorii concursului &#039;&#039;Românii au talent&#039;&#039;, la preselecţia organizată la Piatra Neamţ au venit foarte mulţi români să demonstreze că au talent.&lt;br /&gt;
&lt;br /&gt;
La înscriere, fiecare participant a primit câte un număr de concurs, reprezentat de un număr natural nenul. Unii dintre participanţi pot avea statut special, fiind admişi direct în semifinale, ca urmare a rezultatelor deosebite obţinute la ediţiile anterioare, numărul de concurs primit de aceştia având proprietatea că toate cifrele lui pot fi aranjate astfel încăt să formeze un număr palindrom.&lt;br /&gt;
&lt;br /&gt;
Printre numerele de concurs primite de participanţii cu statut special, există numere care au în scrierea lor zecimală un număr maxim de cifre distincte. Cel mai mic dintre aceste numere reprezintă numărul de concurs al participantului VIP.&lt;br /&gt;
&lt;br /&gt;
= Cerinta =&lt;br /&gt;
Scrieţi un program care citeşte numărul natural &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; (reprezentând numărul de participanţi înscrişi la concurs), &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale (reprezentând numerele de concurs ale celor n participanţi) şi determină:&lt;br /&gt;
&lt;br /&gt;
a) numărul &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; de participanţi admişi direct în semifinale;&lt;br /&gt;
&lt;br /&gt;
b) numărul &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; de concurs al participantului &amp;lt;code&amp;gt;VIP&amp;lt;/code&amp;gt;, dacă există un astfel de participant printre cei înscrişi.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie numărul n de participanţi, iar pe fiecare dintre următoarele n linii câte un număr natural reprezentând numărul de concurs al unui participant.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fişierul &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine pe prima linie cele două valori &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;, separate printr-un singur spaţiu, în această ordine. Dacă nu există participanţi admişi direct în semifinală, atunci prima linie a fişierului va conţine două valori nule, separate printr-un singur spaţiu: &amp;lt;code&amp;gt;0 0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
• &amp;lt;code&amp;gt;0 &amp;lt;n ≤ 15000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
17864&lt;br /&gt;
&lt;br /&gt;
9900&lt;br /&gt;
&lt;br /&gt;
90321&lt;br /&gt;
&lt;br /&gt;
4704&lt;br /&gt;
&lt;br /&gt;
351&lt;br /&gt;
&lt;br /&gt;
83181&lt;br /&gt;
&lt;br /&gt;
46476&lt;br /&gt;
&lt;br /&gt;
7432&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
3 46476&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Sunt &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; participanţi calificaţi direct în semifinală. Numerele lor de concurs sunt numere ale căror cifre pot fi aranjate astfel încât să formeze un palindrom : &amp;lt;code&amp;gt;9900&amp;lt;/code&amp;gt;(format din &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; cifre distincte), &amp;lt;code&amp;gt;83181&amp;lt;/code&amp;gt; (format din &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; cifre distincte) şi &amp;lt;code&amp;gt;46476&amp;lt;/code&amp;gt; (format din &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; cifre distincte). Dintre acestea, cel mai mic număr format dintr-un număr maxim de cifre distincte este &amp;lt;code&amp;gt;46476&amp;lt;/code&amp;gt; reprezentând numărul de concurs al participantului &amp;lt;code&amp;gt;VIP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
999999999999999&lt;br /&gt;
&lt;br /&gt;
17864&lt;br /&gt;
&lt;br /&gt;
9900&lt;br /&gt;
&lt;br /&gt;
90321&lt;br /&gt;
&lt;br /&gt;
4704&lt;br /&gt;
&lt;br /&gt;
351&lt;br /&gt;
&lt;br /&gt;
83181&lt;br /&gt;
&lt;br /&gt;
46476&lt;br /&gt;
&lt;br /&gt;
7432&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=15000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
    with open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
        x = 0&lt;br /&gt;
        vip = 0&lt;br /&gt;
        p = 0&lt;br /&gt;
        c = [0] * 10&lt;br /&gt;
        maxd = 0&lt;br /&gt;
        d = 0&lt;br /&gt;
&lt;br /&gt;
        def pali(x):&lt;br /&gt;
            global maxd, d&lt;br /&gt;
            k = 0&lt;br /&gt;
            nen = 0&lt;br /&gt;
            d = 0&lt;br /&gt;
            for i in range(10):&lt;br /&gt;
                c[i] = 0&lt;br /&gt;
            while x:&lt;br /&gt;
                c[x % 10] += 1&lt;br /&gt;
                nen += (x % 10 != 0)&lt;br /&gt;
                x = x // 10&lt;br /&gt;
            for i in range(10):&lt;br /&gt;
                k += (c[i] % 2 != 0)&lt;br /&gt;
                d += (c[i] != 0)&lt;br /&gt;
            if nen == 1 and c[0] != 0:&lt;br /&gt;
                return 0&lt;br /&gt;
            return k &amp;lt; 2&lt;br /&gt;
&lt;br /&gt;
        n = int(f.readline().strip())&lt;br /&gt;
        ver(n)&lt;br /&gt;
        for _ in range(n):&lt;br /&gt;
            x = int(f.readline().strip())&lt;br /&gt;
            if pali(x):&lt;br /&gt;
                p += 1&lt;br /&gt;
                if not vip or maxd &amp;lt; d or (maxd == d and x &amp;lt; vip):&lt;br /&gt;
                    vip = x&lt;br /&gt;
                    maxd = d&lt;br /&gt;
&lt;br /&gt;
        g.write(f&amp;quot;{p} {vip}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2179_-_Max_3&amp;diff=9016</id>
		<title>2179 - Max 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2179_-_Max_3&amp;diff=9016"/>
		<updated>2024-01-04T20:28:11Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Fie &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; un număr natural nenul şi un şir de &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale nenule, fiecare număr din şir având cel mult &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; cifre. Şirul dat se &amp;lt;code&amp;gt;„maximizează”&amp;lt;/code&amp;gt; prin aplicarea următoarelor transformări:  T1: Fiecare număr &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; din şir este înlocuit cu cel mai mare număr care se poate obţine prin aranjarea tuturor cifrelor lui &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. De exemplu, pentru &amp;lt;code&amp;gt;y=102&amp;lt;/code&amp;gt;, prin aranjarea cifrelor, se obţin n...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fie &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; un număr natural nenul şi un şir de &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale nenule, fiecare număr din şir având cel mult &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; cifre. Şirul dat se &amp;lt;code&amp;gt;„maximizează”&amp;lt;/code&amp;gt; prin aplicarea următoarelor transformări:&lt;br /&gt;
&lt;br /&gt;
T1: Fiecare număr &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; din şir este înlocuit cu cel mai mare număr care se poate obţine prin aranjarea tuturor cifrelor lui &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. De exemplu, pentru &amp;lt;code&amp;gt;y=102&amp;lt;/code&amp;gt;, prin aranjarea cifrelor, se obţin numerele: &amp;lt;code&amp;gt;12, 21, 102, 120, 201, 210,&amp;lt;/code&amp;gt; cel mai mare număr fiind &amp;lt;code&amp;gt;210&amp;lt;/code&amp;gt;. Astfel, &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; se va înlocui în şir cu numărul &amp;lt;code&amp;gt;210&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
T2: Se schimbă ordinea numerelor din şirul obţinut după aplicarea transformării &amp;lt;code&amp;gt;T1&amp;lt;/code&amp;gt; astfel încât numărul &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; obţinut prin alipirea tuturor numerelor din şir, în ordinea în care apar după schimbare, să fie cel mai mare posibil.&lt;br /&gt;
&lt;br /&gt;
De exemplu,pentru &amp;lt;code&amp;gt;n=3&amp;lt;/code&amp;gt; şi şirul: &amp;lt;code&amp;gt;12, 132, 102,&amp;lt;/code&amp;gt;după aplicarea transformării &amp;lt;code&amp;gt;T1&amp;lt;/code&amp;gt; noul şir este format din numerele: &amp;lt;code&amp;gt;21, 321, 210&amp;lt;/code&amp;gt;. Din acest şir, se pot obţine, prin schimbarea ordinii numerelor, următoarele &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; şiruri:&lt;br /&gt;
&lt;br /&gt;
1) &amp;lt;code&amp;gt;21, 321, 210&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
2) &amp;lt;code&amp;gt;21, 210, 321&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
3) &amp;lt;code&amp;gt;321, 21, 210&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
4) &amp;lt;code&amp;gt;321, 210, 21&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
5) &amp;lt;code&amp;gt;210, 21, 321&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
6) &amp;lt;code&amp;gt;210, 321, 21&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Numerele care rezultă prin alipirea numerelor din fiecare şir obţinut sunt:&lt;br /&gt;
&lt;br /&gt;
1) &amp;lt;code&amp;gt;21321210&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
2) &amp;lt;code&amp;gt;21210321&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
3) &amp;lt;code&amp;gt;32121210&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
4) &amp;lt;code&amp;gt;32121021&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
5) &amp;lt;code&amp;gt;21021321&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
6) &amp;lt;code&amp;gt;21032121&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
După aplicarea transformării &amp;lt;code&amp;gt;T2&amp;lt;/code&amp;gt;, şirul „maximizat” este: &amp;lt;code&amp;gt;321, 21, 210&amp;lt;/code&amp;gt; deoarece cel mai mare număr dintre cele &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; obţinute este &amp;lt;code&amp;gt;x=32121210&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieţi un program care să citească numărul natural nenul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale nenule din şir şi care să determine:&lt;br /&gt;
&lt;br /&gt;
a) cel mai mare număr &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; din şirul de numere obţinut în urma aplicării transformării &amp;lt;code&amp;gt;T1&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
b) numărul &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; obţinut prin alipirea numerele din şirul „maximizat” rezultat în urma aplicării transformării &amp;lt;code&amp;gt;T2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine două linii. Pe prima linie este scris numărul natural nenul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar pe a doua linie sunt scrise cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale nenule din şir, 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 &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine:&lt;br /&gt;
&lt;br /&gt;
− pe prima linie numărul natural &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, reprezentând cel mai mare număr din şirul de numere obţinut în urma aplicării transformării &amp;lt;code&amp;gt;T1&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
− pe a doua linie numărul natural &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, reprezentând numărul obţinut prin alipirea numerelor din şirul „maximizat”, rezultat în urma aplicării transformării &amp;lt;code&amp;gt;T2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
• Numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; este număr natural &amp;lt;code&amp;gt;2 ≤ n ≤ 3500&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
34 23 9 43 21 67 121 79 213&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
321&lt;br /&gt;
&lt;br /&gt;
9977643433232121211&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
După aplicarea transformării &amp;lt;code&amp;gt;T1&amp;lt;/code&amp;gt;, şirul devine: &amp;lt;code&amp;gt;43, 32, 9, 43, 21, 76, 211, 97, 321&amp;lt;/code&amp;gt;. Cel mai mare număr din acest şir este &amp;lt;code&amp;gt;m=321&amp;lt;/code&amp;gt;. După aplicarea transformării &amp;lt;code&amp;gt;T2&amp;lt;/code&amp;gt;, şirul maximizat este: &amp;lt;code&amp;gt;9, 97, 76, 43, 43, 32, 321, 21, 211&amp;lt;/code&amp;gt; iar numărul &amp;lt;code&amp;gt;x=9977643433232121211&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999&lt;br /&gt;
&lt;br /&gt;
34 23 9 43 21 67 121 79 213&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n):&lt;br /&gt;
    if not(2&amp;lt;=n&amp;lt;=3500):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline().strip())&lt;br /&gt;
        ver(n)&lt;br /&gt;
        v = [0] * 3502&lt;br /&gt;
        maxi = -1&lt;br /&gt;
        freq = [0] * 1000&lt;br /&gt;
&lt;br /&gt;
        for line in f:&lt;br /&gt;
            v = list(map(int, line.split()))&lt;br /&gt;
&lt;br /&gt;
        for i in range(0, n):&lt;br /&gt;
            aux = v[i]&lt;br /&gt;
            nrc = 0&lt;br /&gt;
            nr = 0&lt;br /&gt;
&lt;br /&gt;
            while aux:&lt;br /&gt;
                nrc += 1&lt;br /&gt;
                aux //= 10&lt;br /&gt;
&lt;br /&gt;
            cif = [0] * (nrc + 1)&lt;br /&gt;
            cnt = 0&lt;br /&gt;
            aux = v[i]&lt;br /&gt;
&lt;br /&gt;
            while aux:&lt;br /&gt;
                cnt += 1&lt;br /&gt;
                cif[cnt] = aux % 10&lt;br /&gt;
                aux //= 10&lt;br /&gt;
&lt;br /&gt;
            cif[1:cnt+1] = sorted(cif[1:cnt+1])&lt;br /&gt;
&lt;br /&gt;
            while cnt:&lt;br /&gt;
                nr *= 10&lt;br /&gt;
                nr += cif[cnt]&lt;br /&gt;
                cnt -= 1&lt;br /&gt;
&lt;br /&gt;
            v[i] = nr&lt;br /&gt;
&lt;br /&gt;
            if v[i] &amp;gt; maxi:&lt;br /&gt;
                maxi = v[i]&lt;br /&gt;
&lt;br /&gt;
        for i in range(0, n):&lt;br /&gt;
            freq[v[i]] += 1&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
            g.write(str(maxi) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            for i in range(9, -1, -1):&lt;br /&gt;
                while freq[i]:&lt;br /&gt;
                    g.write(str(i))&lt;br /&gt;
                    freq[i] -= 1&lt;br /&gt;
&lt;br /&gt;
                for j in range(i * 10 + 9, i * 10, -1):&lt;br /&gt;
                    while freq[j]:&lt;br /&gt;
                        g.write(str(j))&lt;br /&gt;
                        freq[j] -= 1&lt;br /&gt;
&lt;br /&gt;
                    for k in range(j * 10 + 9, j * 10, -1):&lt;br /&gt;
                        while freq[k]:&lt;br /&gt;
                            g.write(str(k))&lt;br /&gt;
                            freq[k] -= 1&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>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0980_-_Sir_4&amp;diff=9013</id>
		<title>0980 - Sir 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0980_-_Sir_4&amp;diff=9013"/>
		<updated>2024-01-04T19:25:01Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Se consideră şirul de numere naturale:  1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21,... Se grupează numerele din şir astfel încât prima grupă, numerotată cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, este formată din primul număr din şir (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;), a doua grupă, numerotată cu &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, este formată din următoarele două numere din şir (&amp;lt;code&amp;gt;3,5&amp;lt;/code&amp;gt;), a treia grupă, numerotată cu &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, este formată din următoarele trei numere din şir (&amp;lt;code&amp;gt;7,9,11&amp;lt;/code&amp;gt;),…, a...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră şirul de numere naturale:&lt;br /&gt;
 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21,...&lt;br /&gt;
Se grupează numerele din şir astfel încât prima grupă, numerotată cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, este formată din primul număr din şir (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;), a doua grupă, numerotată cu &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, este formată din următoarele două numere din şir (&amp;lt;code&amp;gt;3,5&amp;lt;/code&amp;gt;), a treia grupă, numerotată cu &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, este formată din următoarele trei numere din şir (&amp;lt;code&amp;gt;7,9,11&amp;lt;/code&amp;gt;),…, a &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;-a grupă din şir, numerotată cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, este formată din următoarele n numere din şir, etc.&lt;br /&gt;
&lt;br /&gt;
= Cerinţe =&lt;br /&gt;
Deduceţi regula după care sunt generaţi termenii şirului şi scrieţi un program care să citească numerele naturale &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; şi care să determine:&lt;br /&gt;
&lt;br /&gt;
a) al câtelea număr din şir are valoarea &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
b) cel mai mare număr natural palindrom care poate fi obţinut folosindu-se cifrele tuturor numerelor din grupa a &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;-a a şirului dat, nu neapărat toate aceste cifre;&lt;br /&gt;
&lt;br /&gt;
c) numărul grupei cu proprietatea că suma tuturor numerelor conţinute de aceasta este egală cu numărul &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;, dacă există o astfel de grupă.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură, în acestă ordine, trei numere naturale &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran, în această ordine:&lt;br /&gt;
&lt;br /&gt;
* o valoare naturală reprezentând al câtelea număr din şir are valoarea &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;.&lt;br /&gt;
* cel mai mare număr natural palindrom care poate fi obţinut folosindu-se cifrele tuturor numerelor din grupa a &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;-a a şirului dat, nu neapărat toate aceste cifre.&lt;br /&gt;
* numărul grupei cu proprietatea că suma tuturor numerelor conţinute de aceasta este egală cu numărul &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;; dacă nu există o astfel de grupă se va scrie numărul &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* Numerele &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; sunt naturale&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ p ≤ 2.000.001&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; număr natural impar&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 50&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ k ≤ 2.000.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
19 5 125&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
22922&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
* În şir, valoarea &amp;lt;code&amp;gt;19&amp;lt;/code&amp;gt; apare pe poziţia &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;, aceşti &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; termeni termeni fiind: &amp;lt;code&amp;gt;1,3,5,7,9,11,13,15,17,19&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Numerele din grupa a &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;-a sunt scrise cu ajutorul a &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; cifră de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; cifre de &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; de &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; de &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; de &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; de &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;. Ce mai mare palindrom care se poate scrie cu aceste cifre este &amp;lt;code&amp;gt;22922&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Grupa &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; are suma egală cu &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;21+23+25+27+29=125&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
999999999999999 5 125&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def is_valid_input(p, n, k):&lt;br /&gt;
    return (1 &amp;lt;= p &amp;lt;= 2000001) and (p % 2 == 1) and (1 &amp;lt;= n &amp;lt;= 50) and (1 &amp;lt;= k &amp;lt;= 2000000000)&lt;br /&gt;
&lt;br /&gt;
p, n, k = map(int, input().split())&lt;br /&gt;
&lt;br /&gt;
if not is_valid_input(p,n,k):&lt;br /&gt;
    print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
    exit()&lt;br /&gt;
&lt;br /&gt;
print((p + 1) // 2)&lt;br /&gt;
&lt;br /&gt;
# palindrom&lt;br /&gt;
cifre = [0] * 10&lt;br /&gt;
for i in range(n * n - n + 1, n * n - n + 1 + 2 * n, 2):&lt;br /&gt;
    aux = i&lt;br /&gt;
    while aux:&lt;br /&gt;
        cifre[aux % 10] += 1&lt;br /&gt;
        aux //= 10&lt;br /&gt;
&lt;br /&gt;
result = []&lt;br /&gt;
for i in range(9, -1, -1):&lt;br /&gt;
    result.extend([str(i)] * (cifre[i] // 2))&lt;br /&gt;
for i in range(9, -1, -1):&lt;br /&gt;
    if cifre[i] % 2 == 1:&lt;br /&gt;
        result.append(str(i))&lt;br /&gt;
        break&lt;br /&gt;
for i in range(10):&lt;br /&gt;
    result.extend([str(i)] * (cifre[i] // 2))&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;&amp;quot;.join(result))&lt;br /&gt;
# palindrom&lt;br /&gt;
&lt;br /&gt;
cbr = round(k ** (1 / 3))&lt;br /&gt;
if cbr ** 3 == k:&lt;br /&gt;
    print(cbr)&lt;br /&gt;
else:&lt;br /&gt;
    print(0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1709_-_Asort&amp;diff=9008</id>
		<title>1709 - Asort</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1709_-_Asort&amp;diff=9008"/>
		<updated>2024-01-04T19:06:04Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Se consideră un număr natural par &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și șirul ordonat crescător &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; format din primele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale nenule:  &amp;lt;code&amp;gt;X[1] = 1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;X[2] = 2&amp;lt;/code&amp;gt;, …., &amp;lt;code&amp;gt;X[N] = N&amp;lt;/code&amp;gt;.  Pozițiile numerelor din șir se pot modifica doar conform regulii &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;,după cum urmează:  * dacă &amp;lt;code&amp;gt;X[1]&amp;lt;/code&amp;gt; este număr impar, atunci se interschimbă &amp;lt;code&amp;gt;X[1]&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt;X[2]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;X[3]&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt;X[4]&amp;lt;/code...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră un număr natural par &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și șirul ordonat crescător &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; format din primele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale nenule:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;X[1] = 1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;X[2] = 2&amp;lt;/code&amp;gt;, …., &amp;lt;code&amp;gt;X[N] = N&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pozițiile numerelor din șir se pot modifica doar conform regulii &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;,după cum urmează:&lt;br /&gt;
&lt;br /&gt;
* dacă &amp;lt;code&amp;gt;X[1]&amp;lt;/code&amp;gt; este număr impar, atunci se interschimbă &amp;lt;code&amp;gt;X[1]&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt;X[2]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;X[3]&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt;X[4]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;X[N-1]&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt;X[N]&amp;lt;/code&amp;gt;;&lt;br /&gt;
* dacă &amp;lt;code&amp;gt;X[1]&amp;lt;/code&amp;gt; este par atunci se interschimbă &amp;lt;code&amp;gt;X[2]&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt;X[3]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;X[4]&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt;X[5]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;X[N-2]&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt;X[N-1]&amp;lt;/code&amp;gt;, iar &amp;lt;code&amp;gt;X[N]&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt;X[1]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Aplicând de &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; ori regula &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; șirului &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; se transformă șirul dat într-un șir “A sortat”.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Cunoscându-se numerele naturale &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt;, scrieți un program care să determine:&lt;br /&gt;
&lt;br /&gt;
1) Numărul situat pe poziția &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; în șirul “ &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; sortat” obținut prin aplicarea de &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; ori a regulii “ &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; ” șirului &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
2) Predecesorul și succesorul numărului &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; în șirul “ &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; sortat” .&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie un număr natural &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt;; numărul &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; poate avea doar valoarea &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; sau valoarea &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. A doua linie a fișierului &amp;lt;code&amp;gt;asort.in&amp;lt;/code&amp;gt; conține în această ordine, patru numere naturale &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; și&lt;br /&gt;
&lt;br /&gt;
T, separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
&lt;br /&gt;
* Dacă valoarea lui &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, atunci se va rezolva numai cerința 1). În acest caz, fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine pe prima linie un număr natural reprezentând numărul de pe poziția &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; din șirul &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; sortat.&lt;br /&gt;
* Dacă valoarea lui &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, atunci se va rezolva numai cerința 2). În acest caz, fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie două numere naturale, separate printr-un singur spațiu, reprezentând, în această ordine, predecesorul și succesorul numărului &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;6 &amp;lt; N &amp;lt; 1 000 000 000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 &amp;lt; R &amp;lt; 1 000 000 000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
6 2 3 4&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Se rezolvă cerința 1. &amp;lt;code&amp;gt;N=6&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;R=2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;K=3&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;T=4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;X[1] X[2] X[3] X[4] X[5] X[6]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Șirul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; inițial &amp;lt;code&amp;gt;1 2 3 4 5 6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Șirul după prima aplicare a regulii “ &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;” &amp;lt;code&amp;gt;2 1 4 3 6 5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Șirul asortat, obținut după a doua aplicare a regulii “A” &amp;lt;code&amp;gt;5 4 1 6 3 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În șirul “asortat”, pe poziția &amp;lt;code&amp;gt;K=3&amp;lt;/code&amp;gt; se află valoarea 1 care se va scrie pe prima linie a fișierului &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
6 2 3 4&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
5 1&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Se rezolvă cerința 2. &amp;lt;code&amp;gt;N=6&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;R=2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;K=3&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;T=4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Șirul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; inițial &amp;lt;code&amp;gt;1 2 3 4 5 6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Șirul după prima aplicare a regulii “A” &amp;lt;code&amp;gt;2 1 4 3 6 5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Șirul asortat, obținut după a doua aplicare a regulii “A” &amp;lt;code&amp;gt;5 4 1 6 3 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În șirul “asortat”, predecesorul numărului &amp;lt;code&amp;gt;T=4&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, iar succesorul este &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Numerele &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; se vor scrie pe prima linie a fișierului &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt;, în această ordine.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
99999999999999 2 3 4&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n,r):&lt;br /&gt;
    if not(6&amp;lt;=n&amp;lt;=1000000000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    if not(1&amp;lt;=r&amp;lt;=1000000000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def numar_poz(k):&lt;br /&gt;
    global n, r&lt;br /&gt;
    nrc = 0&lt;br /&gt;
    if r == 0:&lt;br /&gt;
        return k&lt;br /&gt;
    if r % 2 != 0:&lt;br /&gt;
        if k % 2 != 0:&lt;br /&gt;
            nrc = (r + k) % n&lt;br /&gt;
        else:&lt;br /&gt;
            nrc = (n + k - r) % n&lt;br /&gt;
    else:&lt;br /&gt;
        if k % 2 == 0:&lt;br /&gt;
            nrc = (r + k) % n&lt;br /&gt;
        else:&lt;br /&gt;
            nrc = (n + k - r) % n&lt;br /&gt;
    if nrc == 0:&lt;br /&gt;
        nrc = n&lt;br /&gt;
    return nrc&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    global n, r, t&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as input_file, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as output_file:&lt;br /&gt;
        p = int(input_file.readline())&lt;br /&gt;
        n, r, k, t = map(int, input_file.readline().split())&lt;br /&gt;
        ver(n,r)&lt;br /&gt;
        r = r % n&lt;br /&gt;
        if p == 1:&lt;br /&gt;
            output_file.write(str(numar_poz(k)) + &#039;\n&#039;)&lt;br /&gt;
        else:&lt;br /&gt;
            pozt = (n + t - r) % n if t % 2 == 0 else (t + r) % n&lt;br /&gt;
            if pozt == 0:&lt;br /&gt;
                pozt = n&lt;br /&gt;
            if pozt == 1:&lt;br /&gt;
                poz_pred, poz_succ = n, 2&lt;br /&gt;
            elif pozt == n:&lt;br /&gt;
                poz_pred, poz_succ = n - 1, 1&lt;br /&gt;
            else:&lt;br /&gt;
                poz_pred, poz_succ = pozt - 1, pozt + 1&lt;br /&gt;
            pred = numar_poz(poz_pred)&lt;br /&gt;
            succ = numar_poz(poz_succ)&lt;br /&gt;
            output_file.write(str(pred) + &amp;quot; &amp;quot; + str(succ) + &#039;\n&#039;)&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>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1559_-_Minge&amp;diff=9006</id>
		<title>1559 - Minge</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1559_-_Minge&amp;diff=9006"/>
		<updated>2024-01-04T18:53:10Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; copii, numerotați de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, se aşează în cerc, unul lângă altul, în ordinea crescătoare a numerelor lor, copilul cu numărul &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; ajungând să fie situat lângă copilul cu numărul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.  Un copil din cerc are o minge. El o aruncă unui alt copil din cerc. Acesta o aruncă și el unui alt copil din cerc care nu a atins vreodată mingea, … șamd. Fiecare aruncare este notată printr-o pereche de numer...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; copii, numerotați de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, se aşează în cerc, unul lângă altul, în ordinea crescătoare a numerelor lor, copilul cu numărul &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; ajungând să fie situat lângă copilul cu numărul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Un copil din cerc are o minge. El o aruncă unui alt copil din cerc. Acesta o aruncă și el unui alt copil din cerc care nu a atins vreodată mingea, … șamd. Fiecare aruncare este notată printr-o pereche de numere naturale distincte &amp;lt;code&amp;gt;(X,Y)&amp;lt;/code&amp;gt; cu semnificația că copilul cu numărul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; aruncă mingea copilului cu numărul &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; care nu a mai atins mingea până în acel moment.&lt;br /&gt;
&lt;br /&gt;
= Cerințe =&lt;br /&gt;
Cunoscându-se numerele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; și cele &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; perechi de numere corespunzătoare celor &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; aruncări să se determine:&lt;br /&gt;
&lt;br /&gt;
1) Numărul copiilor care nu ating niciodată mingea.&lt;br /&gt;
&lt;br /&gt;
2) Traseul parcurs de minge plecând de la copilul care are mingea la începutul jocului, până la copilul care nu mai aruncă mingea.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține&lt;br /&gt;
&lt;br /&gt;
– pe prima linie, un număr natural &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;; pentru toate testele de intrare, &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; poate avea doar valoarea &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; sau valoarea &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
– pe a doua linie, cele două numere naturale &amp;lt;code&amp;gt;N K&amp;lt;/code&amp;gt;, separate printr-un spațiu.&lt;br /&gt;
&lt;br /&gt;
– pe fiecare dintre următoarele &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; linii (câte una pentru fiecare aruncare), câte o pereche de numere naturale &amp;lt;code&amp;gt;X Y&amp;lt;/code&amp;gt;, separate printr-un spațiu, cu semnificația: copilul cu numărul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; aruncă mingea copilului cu numărul &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
– Dacă valoarea lui &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, atunci se va rezolva numai cerința &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. În acest caz, fişierul &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine pe prima linie un număr natural reprezentând numărul copiilor care nu ating niciodată mingea&lt;br /&gt;
&lt;br /&gt;
– Dacă valoarea lui &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, atunci se va rezolva numai cerința &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. În acest caz, fişierul &amp;lt;code&amp;gt;ouput.txt&amp;lt;/code&amp;gt; va conţine pe prima linie, traseul parcurs de minge plecând de la copilul care are mingea la începutul jocului, până la copilul care nu mai aruncă mingea; traseul este descris prin șirul numerelor copiilor care ating mingea, separate prin câte un spațiu, în ordinea în care este aruncată mingea.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;6 ≤ N ≤ 10000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ K ≤ N-1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
7 4&lt;br /&gt;
&lt;br /&gt;
4 3&lt;br /&gt;
&lt;br /&gt;
2 6&lt;br /&gt;
&lt;br /&gt;
3 1&lt;br /&gt;
&lt;br /&gt;
6 4&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;p=1&amp;lt;/code&amp;gt;. Se rezolvă doar cerința &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Sunt &amp;lt;code&amp;gt;N=7&amp;lt;/code&amp;gt; copii. Se fac &amp;lt;code&amp;gt;K=4&amp;lt;/code&amp;gt; aruncări. Sunt &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; copii care nu ating mingea, cei cu numerele &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
7 4&lt;br /&gt;
&lt;br /&gt;
4 3&lt;br /&gt;
&lt;br /&gt;
2 6&lt;br /&gt;
&lt;br /&gt;
3 1&lt;br /&gt;
&lt;br /&gt;
6 4&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
2 6 4 3 1&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;p=2&amp;lt;/code&amp;gt;. Se rezolvă doar cerința &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. Sunt &amp;lt;code&amp;gt;N=7&amp;lt;/code&amp;gt; copii. Se fac &amp;lt;code&amp;gt;K=4&amp;lt;/code&amp;gt; aruncări.&lt;br /&gt;
&lt;br /&gt;
Traseul parcurs de minge pornește de la copilul cu numărul &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; și se termină la copilul cu numărul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; este: &amp;lt;code&amp;gt;2 6 4 3 1&amp;lt;/code&amp;gt;, deoarece se fac aruncările: &amp;lt;code&amp;gt;(2,6),(6,4),(4,3),(3,1)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
99999999 4&lt;br /&gt;
&lt;br /&gt;
4 3&lt;br /&gt;
&lt;br /&gt;
2 6&lt;br /&gt;
&lt;br /&gt;
3 1&lt;br /&gt;
&lt;br /&gt;
6 4&lt;br /&gt;
&lt;br /&gt;
Ouput:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n,m):&lt;br /&gt;
    if not(6&amp;lt;=n&amp;lt;=10000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    if not(1&amp;lt;=m&amp;lt;=n-1):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &#039;r&#039;) as fin, open(&amp;quot;output.txt&amp;quot;, &#039;w&#039;) as fout:&lt;br /&gt;
    freq = [0] * 10001&lt;br /&gt;
    col1 = [0] * 10001&lt;br /&gt;
    col2 = [0] * 10001&lt;br /&gt;
&lt;br /&gt;
    t=int(fin.readline())&lt;br /&gt;
    n, m = map(int, fin.readline().split())&lt;br /&gt;
    &lt;br /&gt;
    ver(n,m)&lt;br /&gt;
&lt;br /&gt;
    if t == 1:&lt;br /&gt;
        for _ in range(m):&lt;br /&gt;
            x, y = map(int, fin.readline().split())&lt;br /&gt;
            freq[x] += 1&lt;br /&gt;
            freq[y] += 1&lt;br /&gt;
&lt;br /&gt;
        nr = sum(1 for i in range(1, n + 1) if freq[i] == 0)&lt;br /&gt;
        fout.write(str(nr))&lt;br /&gt;
    elif t == 2:&lt;br /&gt;
        for _ in range(m):&lt;br /&gt;
            x, y = map(int, fin.readline().split())&lt;br /&gt;
            freq[x] = y&lt;br /&gt;
            col1[x] += 1&lt;br /&gt;
            col2[y] += 1&lt;br /&gt;
&lt;br /&gt;
        start, finish = 0, 0&lt;br /&gt;
        for i in range(1, 10001):&lt;br /&gt;
            if col1[i] &amp;gt; 0 and col2[i] == 0:&lt;br /&gt;
                start = i&lt;br /&gt;
            if col2[i] &amp;gt; 0 and col1[i] == 0:&lt;br /&gt;
                finish = i&lt;br /&gt;
&lt;br /&gt;
        z = start&lt;br /&gt;
        fout.write(str(start) + &#039; &#039;)&lt;br /&gt;
        while freq[z] != finish:&lt;br /&gt;
            fout.write(str(freq[z]) + &#039; &#039;)&lt;br /&gt;
            z = freq[z]&lt;br /&gt;
&lt;br /&gt;
        fout.write(str(finish))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0601_-_Dreptunghiuri&amp;diff=9005</id>
		<title>0601 - Dreptunghiuri</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0601_-_Dreptunghiuri&amp;diff=9005"/>
		<updated>2024-01-04T18:36:49Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se consideră într-un reper cartezian &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; puncte cu coordonate pozitive. Prin fiecare punct se desenează o dreaptă verticală și una orizontală. Să se determine câte dreptunghiuri cu interioarele disjuncte s-au format prin intermediul acestor drepte şi al axelor de coordonate.  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;; următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii conțin câte două nu...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se consideră într-un reper cartezian &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; puncte cu coordonate pozitive. Prin fiecare punct se desenează o dreaptă verticală și una orizontală. Să se determine câte dreptunghiuri cu interioarele disjuncte s-au format prin intermediul acestor drepte şi al axelor de coordonate.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;; următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii conțin câte două numere &amp;lt;code&amp;gt;x y&amp;lt;/code&amp;gt;, reprezentând coordonatele punctelor.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie numărul &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, reprezentând valoarea cerută.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
1 0&lt;br /&gt;
&lt;br /&gt;
2 4&lt;br /&gt;
&lt;br /&gt;
4 2&lt;br /&gt;
&lt;br /&gt;
1 2&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999&lt;br /&gt;
&lt;br /&gt;
1 0&lt;br /&gt;
&lt;br /&gt;
3 4&lt;br /&gt;
&lt;br /&gt;
4 2&lt;br /&gt;
&lt;br /&gt;
1 2&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=1000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
        &lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &#039;r&#039;) as fin, open(&amp;quot;output.txt&amp;quot;, &#039;w&#039;) as fout:&lt;br /&gt;
    n = int(fin.readline())&lt;br /&gt;
    ver(n)&lt;br /&gt;
    a = [0] * (n + 1)&lt;br /&gt;
    b = [0] * (n + 1)&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        a[i], b[i] = map(int, fin.readline().split())&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        for j in range(i + 1, n + 1):&lt;br /&gt;
            if a[i] &amp;gt; a[j]:&lt;br /&gt;
                a[i], a[j] = a[j], a[i]&lt;br /&gt;
            if b[i] &amp;gt; b[j]:&lt;br /&gt;
                b[i], b[j] = b[j], b[i]&lt;br /&gt;
&lt;br /&gt;
    cnt1 = 0&lt;br /&gt;
    cnt2 = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        if a[i] != a[i - 1]:&lt;br /&gt;
            cnt1 += 1&lt;br /&gt;
        if b[i] != b[i - 1]:&lt;br /&gt;
            cnt2 += 1&lt;br /&gt;
&lt;br /&gt;
    fout.write(str(cnt1 * cnt2))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1840_-_P_Max&amp;diff=9003</id>
		<title>1840 - P Max</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1840_-_P_Max&amp;diff=9003"/>
		<updated>2024-01-04T18:32:00Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se dau &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, fie acestea &amp;lt;code&amp;gt;A1, A2,..., An&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;Xi&amp;lt;/code&amp;gt; cel mai mic număr care are aceiași factori primi in descompunere ca şi &amp;lt;code&amp;gt;Ai&amp;lt;/code&amp;gt;, unde &amp;lt;code&amp;gt;1≤i≤n&amp;lt;/code&amp;gt;. Aflați produsul &amp;lt;code&amp;gt;X1 * X2 *...* Xn&amp;lt;/code&amp;gt;.  = Date de intrare = Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, separate prin spații.  = Date de ieșire = Programul va afișa pe ecran num...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dau &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, fie acestea &amp;lt;code&amp;gt;A1, A2,..., An&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;Xi&amp;lt;/code&amp;gt; cel mai mic număr care are aceiași factori primi in descompunere ca şi &amp;lt;code&amp;gt;Ai&amp;lt;/code&amp;gt;, unde &amp;lt;code&amp;gt;1≤i≤n&amp;lt;/code&amp;gt;. Aflați produsul &amp;lt;code&amp;gt;X1 * X2 *...* Xn&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, separate prin spații.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran numărul &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt;, reprezentand numărul cerut.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
45&lt;br /&gt;
&lt;br /&gt;
20&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
150&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;45 = 5 * 3 * 3,  20 = 2 * 2 * 5&amp;lt;/code&amp;gt;. Cel mai mic număr care are factorii &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; in descompunere este &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt;, iar cu factorii &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;15 * 10 = 150&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
999999999&lt;br /&gt;
&lt;br /&gt;
45&lt;br /&gt;
&lt;br /&gt;
20&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=1000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
rez = [0] * 100002&lt;br /&gt;
p = [0] * 1002&lt;br /&gt;
&lt;br /&gt;
rez[0] = 1&lt;br /&gt;
rez[1] = 1&lt;br /&gt;
&lt;br /&gt;
n = int(input())&lt;br /&gt;
ver(n)&lt;br /&gt;
for k in range(1, n + 1):&lt;br /&gt;
    p[k] = 1&lt;br /&gt;
    x = int(input())&lt;br /&gt;
    d = 2&lt;br /&gt;
    while x != 1:&lt;br /&gt;
        if x % d == 0:&lt;br /&gt;
            p[k] *= d&lt;br /&gt;
        while x % d == 0:&lt;br /&gt;
            x //= d&lt;br /&gt;
        if d == 2:&lt;br /&gt;
            d = 3&lt;br /&gt;
        else:&lt;br /&gt;
            d += 2&lt;br /&gt;
        if d * d &amp;gt; x:&lt;br /&gt;
            d = x&lt;br /&gt;
&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    t = 0&lt;br /&gt;
    j = 1&lt;br /&gt;
    while j &amp;lt;= rez[0]:&lt;br /&gt;
        cif = t + p[i] * rez[j]&lt;br /&gt;
        rez[j] = cif % 10&lt;br /&gt;
        t = cif // 10&lt;br /&gt;
        j += 1&lt;br /&gt;
    while t:&lt;br /&gt;
        rez[0] += 1&lt;br /&gt;
        rez[rez[0]] = t % 10&lt;br /&gt;
        t //= 10&lt;br /&gt;
&lt;br /&gt;
for i in range(rez[0], 0, -1):&lt;br /&gt;
    print(rez[i], end=&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0634_-_Repetare&amp;diff=9001</id>
		<title>0634 - Repetare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0634_-_Repetare&amp;diff=9001"/>
		<updated>2024-01-04T18:28:16Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Gigel are un șir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale. Plictisit, el construiește un nou șir, prin scrierea repetată a valorilor șirului dat. De exemplu, dacă șirul inițial este &amp;lt;code&amp;gt;(2 3 1 5)&amp;lt;/code&amp;gt;, scriindu-l de &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; ori se obține șirul: &amp;lt;code&amp;gt;(2 3 1 5 2 3 1 5 2 3 1 5)&amp;lt;/code&amp;gt;.  Maleficul Costel elimină sau chiar schimbă unele valori din șirul al doilea. Acum Gigel vă pune la dispoziție două șiruri de numere naturale și roag...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Gigel are un șir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale. Plictisit, el construiește un nou șir, prin scrierea repetată a valorilor șirului dat. De exemplu, dacă șirul inițial este &amp;lt;code&amp;gt;(2 3 1 5)&amp;lt;/code&amp;gt;, scriindu-l de &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; ori se obține șirul: &amp;lt;code&amp;gt;(2 3 1 5 2 3 1 5 2 3 1 5)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Maleficul Costel elimină sau chiar schimbă unele valori din șirul al doilea. Acum Gigel vă pune la dispoziție două șiruri de numere naturale și roagă să stabiliți dacă al doilea șir poate obține prin scrierea repetată a primului șir și eliminarea unor elemente iar în caz afirmativ care este numărul minim de repetări ale primului șir prin care se poate obține șirul al doilea.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; – numărul de elemente ale primului șir, iar pe a doua linie &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale separate prin spații, reprezentând elementele primului șir. Linia a treia conține numărul &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; – numărul de elemente ale celui de-al doilea șir, iar a patra linie conține &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; numere naturale separate prin spații, reprezentând elementele șir șirului al doilea.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie numărul &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, reprezentând numărul minim de repetări ale primului șir prin care se poate obține ale doilea șir, sau valoarea &amp;lt;code&amp;gt;IMPOSIBIL&amp;lt;/code&amp;gt; dacă al doilea șir nu poate fi obținut prin scrierea repetată a primului șir și eliminarea unor valor..&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n , m ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
2 3 1 5&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
2 5 3 1 5 3 1 &lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Prin repetarea de trei ori a primului șir se obține șirul &amp;lt;code&amp;gt;2 3 1 5 2 3 1 5 2 3 1 5&amp;lt;/code&amp;gt; Prin eliminarea, în ordine a valorilor &amp;lt;code&amp;gt;3 1 2 2 5&amp;lt;/code&amp;gt; se obține șirul al doilea. Repetând șirul dat de mai puțin de trei ori, oricum a elimina valori din șirul rezultat nu se poate obține al doilea șir.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999&lt;br /&gt;
&lt;br /&gt;
2 3 1 5&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
2 5 3 1 5 3 1 &lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n,m):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=1000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    if not(1&amp;lt;=m&amp;lt;=1000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &#039;r&#039;) as fin, open(&amp;quot;output.txt&amp;quot;, &#039;w&#039;) as fout:&lt;br /&gt;
    n = int(fin.readline())&lt;br /&gt;
    ver(n,10)&lt;br /&gt;
    a = list(map(int, fin.readline().split()))&lt;br /&gt;
    m = int(fin.readline())&lt;br /&gt;
    ver(10,m)&lt;br /&gt;
    b = list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    cnt = 1&lt;br /&gt;
    ok = True&lt;br /&gt;
    i, j = 0, 0&lt;br /&gt;
&lt;br /&gt;
    while j &amp;lt; m and ok:&lt;br /&gt;
        ivechi = i&lt;br /&gt;
        marit = False&lt;br /&gt;
        while i &amp;lt; n and a[i] != b[j]:&lt;br /&gt;
            i += 1&lt;br /&gt;
        if i == n:&lt;br /&gt;
            i = 0&lt;br /&gt;
            cnt += 1&lt;br /&gt;
            marit = True&lt;br /&gt;
            while i &amp;lt; ivechi and a[i] != b[j]:&lt;br /&gt;
                i += 1&lt;br /&gt;
        &lt;br /&gt;
        if i == ivechi and marit:&lt;br /&gt;
            # nu l-am gasit pe b[j] in a[], nu se poate&lt;br /&gt;
            ok = False&lt;br /&gt;
        else:&lt;br /&gt;
            i += 1&lt;br /&gt;
            j += 1&lt;br /&gt;
    &lt;br /&gt;
    if ok:&lt;br /&gt;
        fout.write(str(cnt))&lt;br /&gt;
    else:&lt;br /&gt;
        fout.write(&amp;quot;IMPOSIBIL&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0606_-_Culori&amp;diff=9000</id>
		<title>0606 - Culori</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0606_-_Culori&amp;diff=9000"/>
		<updated>2024-01-04T18:23:10Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Gigel a primit de la bunicul său un trenuleț electric cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; vagoane colorate în diverse culori, identificate prin numere întregi. Gigel consideră că trenul este frumos colorat dacă toate vagoanele colorate la fel sunt învecinate. Acum vă roagă să-i spuneți cu câte culori diferite au fost colorate vagoanele și dacă trenul este frumos colorat.  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie număru...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Gigel a primit de la bunicul său un trenuleț electric cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; vagoane colorate în diverse culori, identificate prin numere întregi. Gigel consideră că trenul este frumos colorat dacă toate vagoanele colorate la fel sunt învecinate. Acum vă roagă să-i spuneți cu câte culori diferite au fost colorate vagoanele și dacă trenul este frumos colorat.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar pe a doua linie &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale nenule, reprezentând în ordine culorile vagoanelor din care este compus trenulețul.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie numărul &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; de culori diferite, iar pe a doua linie mesajul &amp;lt;code&amp;gt;DA&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;NU&amp;lt;/code&amp;gt;, după cum trenul este sau nu frumos colorat.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
2 2 1 6 6&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
DA&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
2 2 6 2 6&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
NU&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999999&lt;br /&gt;
&lt;br /&gt;
1 2 3&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=1000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &#039;r&#039;) as fin, open(&amp;quot;output.txt&amp;quot;, &#039;w&#039;) as fout:&lt;br /&gt;
    n = int(fin.readline())&lt;br /&gt;
    ver(n)&lt;br /&gt;
    v = list(map(int, fin.readline().split()))&lt;br /&gt;
    c = [0] * 1005&lt;br /&gt;
    nrc = 1&lt;br /&gt;
    c[1] = v[0]&lt;br /&gt;
    frumos = True&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        if v[i] != v[i - 1]:&lt;br /&gt;
            poz = 0&lt;br /&gt;
            for j in range(1, nrc + 1):&lt;br /&gt;
                if c[j] == v[i]:&lt;br /&gt;
                    poz = j&lt;br /&gt;
                    break&lt;br /&gt;
            if poz == 0:&lt;br /&gt;
                nrc += 1&lt;br /&gt;
                c[nrc] = v[i]&lt;br /&gt;
            else:&lt;br /&gt;
                frumos = False&lt;br /&gt;
&lt;br /&gt;
    fout.write(str(nrc) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    if frumos:&lt;br /&gt;
        fout.write(&amp;quot;DA&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        fout.write(&amp;quot;NU&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1718_-_Gen_Pascal&amp;diff=8999</id>
		<title>1718 - Gen Pascal</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1718_-_Gen_Pascal&amp;diff=8999"/>
		<updated>2024-01-04T18:18:31Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Se consideră Triunghiul lui Pascal definit astfel: Primul rând conține numărul 1, iar celelalte numere se formează prin însumarea celor două numere de deasupra sa, considerând toate elementele din exteriorul triunghiului ca fiind egale cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.  Prin &amp;#039;&amp;#039;Triunghiul lui Pascal Generalizat&amp;#039;&amp;#039; se înțelege un triunghi care se formează la fel ca &amp;#039;&amp;#039;Triunghiul lui Pascal&amp;#039;&amp;#039; (fiecare număr se obține prin însumarea celor două numere de deasupra sa), numai că prim...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră Triunghiul lui Pascal definit astfel: Primul rând conține numărul 1, iar celelalte numere se formează prin însumarea celor două numere de deasupra sa, considerând toate elementele din exteriorul triunghiului ca fiind egale cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Prin &#039;&#039;Triunghiul lui Pascal Generalizat&#039;&#039; se înțelege un triunghi care se formează la fel ca &#039;&#039;Triunghiul lui Pascal&#039;&#039; (fiecare număr se obține prin însumarea celor două numere de deasupra sa), numai că primul rând va fi considerat liber, iar cele două valori de pe al doilea rând vor fi precizate.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Dându-se numerele naturale nenule &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; situate pe al doilea rând al &#039;&#039;Triunghiului lui Pascal Generalizat&#039;&#039; și un număr &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt;, să se calculeze suma tuturor numerelor aflate pe linia &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;,iar pe a doua linie numărul &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie numărul &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt;, reprezentând suma cerută.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;n,m ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ L ≤ 2000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
1 2&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
48&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Pentru valorile &amp;lt;code&amp;gt;n = 1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m = 2&amp;lt;/code&amp;gt; se construiește următorul triunghi :&lt;br /&gt;
       X - rândul 1 este liber&lt;br /&gt;
      1 2 -rândul 2 cu valorile date&lt;br /&gt;
     1 3 2&lt;br /&gt;
    1 4 5 2&lt;br /&gt;
   1 5 9 7 2&lt;br /&gt;
  1 6 14 16 9 2 rândul cerut, 6.&lt;br /&gt;
Suma elementelor de pe rândul al șaselea este &amp;lt;code&amp;gt;48&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999 2&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0563_-_Fast_Food_1&amp;diff=8998</id>
		<title>0563 - Fast Food 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0563_-_Fast_Food_1&amp;diff=8998"/>
		<updated>2024-01-04T18:01:15Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Fast-food-ul de la colțul străzii are &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; clienți. Pentru fiecare client se cunoaște momentul în care intră în fast-food și momentul în care iese, ambele fiind exprimate în minute, numărate de la începutul perioadei de funcționare. Gigel, patronul acestui fast-food, dorește să afle care este numărul maxim de clienți aflați simultan în restaurant.  = Date de intrare = Programul citește de la tastatură numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar ap...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Fast-food-ul de la colțul străzii are &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; clienți. Pentru fiecare client se cunoaște momentul în care intră în fast-food și momentul în care iese, ambele fiind exprimate în minute, numărate de la începutul perioadei de funcționare. Gigel, patronul acestui fast-food, dorește să afle care este numărul maxim de clienți aflați simultan în restaurant.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; perechi de numere naturale &amp;lt;code&amp;gt;x y&amp;lt;/code&amp;gt; , reprezentând montul intrării, respectiv momentul ieșirii fiecărui client din restaurant.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran numărul &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt;, reprezentând valoarea cerută.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
5 7&lt;br /&gt;
&lt;br /&gt;
10 11&lt;br /&gt;
&lt;br /&gt;
10 13&lt;br /&gt;
&lt;br /&gt;
6 8&lt;br /&gt;
&lt;br /&gt;
7 9&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
La momentul &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; în restaurant se află &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; persoane.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
99999999999999&lt;br /&gt;
&lt;br /&gt;
5 7&lt;br /&gt;
&lt;br /&gt;
10 11&lt;br /&gt;
&lt;br /&gt;
10 13&lt;br /&gt;
&lt;br /&gt;
6 8&lt;br /&gt;
&lt;br /&gt;
7 9&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=1000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
n = int(input())&lt;br /&gt;
ver(n)&lt;br /&gt;
v = [0] * 10005&lt;br /&gt;
&lt;br /&gt;
hmax = 0&lt;br /&gt;
hmin = 10005&lt;br /&gt;
&lt;br /&gt;
for _ in range(n):&lt;br /&gt;
    x, y = map(int, input().split())&lt;br /&gt;
    if x &amp;lt; hmin:&lt;br /&gt;
        hmin = x&lt;br /&gt;
    if y &amp;gt; hmax:&lt;br /&gt;
        hmax = y&lt;br /&gt;
    for j in range(x, y + 1):&lt;br /&gt;
        v[j] += 1&lt;br /&gt;
&lt;br /&gt;
max_val = v[hmin]&lt;br /&gt;
for i in range(hmin, hmax + 1):&lt;br /&gt;
    if max_val &amp;lt; v[i]:&lt;br /&gt;
        max_val = v[i]&lt;br /&gt;
&lt;br /&gt;
print(max_val)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3497_-_Progresie_Geom&amp;diff=8997</id>
		<title>3497 - Progresie Geom</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3497_-_Progresie_Geom&amp;diff=8997"/>
		<updated>2024-01-04T17:57:13Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se dă o progresie geometrică cu primul termen &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, cu rația egală cu , unde &amp;lt;code&amp;gt;[p]&amp;lt;/code&amp;gt; reprezintă partea întreagă a numărului real &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;. Afișați al &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;-lea termen.  = Date de intrare = Programul citește de la tastatură numerele &amp;lt;code&amp;gt;x a b n&amp;lt;/code&amp;gt;.  = Date de ieșire = Programul va afișa pe ecran numărul &amp;lt;code&amp;gt;Z&amp;lt;/code&amp;gt;, reprezentând al &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;-lea termen al progresiei.  = Restricții și precizări =  *...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă o progresie geometrică cu primul termen &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, cu rația egală cu , unde &amp;lt;code&amp;gt;[p]&amp;lt;/code&amp;gt; reprezintă partea întreagă a numărului real &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;. Afișați al &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;-lea termen.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;x a b n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran numărul &amp;lt;code&amp;gt;Z&amp;lt;/code&amp;gt;, reprezentând al &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;-lea termen al progresiei.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;x, a, b&amp;lt;/code&amp;gt; au maximum &amp;lt;code&amp;gt;10.000&amp;lt;/code&amp;gt; de cifre&lt;br /&gt;
* &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; este cel mult &amp;lt;code&amp;gt;10.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
1 5 2 11&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
1024&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
1 5 2 9999999999&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input invalid. Asigurați-vă că x, a, b au cel mult 10.000 de cifre și n este cel mult 10.000.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
def verify_input(x, a, b, n):&lt;br /&gt;
    if len(str(x)) &amp;gt; 10000 or len(str(a)) &amp;gt; 10000 or len(str(b)) &amp;gt; 10000 or n &amp;gt; 10000:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    x = int(input(&amp;quot;Introduceți primul termen x: &amp;quot;))&lt;br /&gt;
    a = int(input(&amp;quot;Introduceți a: &amp;quot;))&lt;br /&gt;
    b = int(input(&amp;quot;Introduceți b: &amp;quot;))&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți n: &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    if not verify_input(x, a, b, n):&lt;br /&gt;
        print(&amp;quot;Input invalid. Asigurați-vă că x, a, b au cel mult 10.000 de cifre și n este cel mult 10.000.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    # Calcularea [ab]&lt;br /&gt;
    ratio = a // b&lt;br /&gt;
&lt;br /&gt;
    # Calcularea al n-lea termen al progresiei&lt;br /&gt;
    result = x * (ratio ** (n - 1))&lt;br /&gt;
&lt;br /&gt;
    print(result)&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>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3522_-_Nr_Div_Huge&amp;diff=8996</id>
		<title>3522 - Nr Div Huge</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3522_-_Nr_Div_Huge&amp;diff=8996"/>
		<updated>2024-01-04T17:51:38Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se dau &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; perechi de numere &amp;lt;code&amp;gt;n k&amp;lt;/code&amp;gt;. Pentru fiecare pereche să se calculeze numărul de divizori al lui .  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, iar pe următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; perechi de numere &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; separate printr-un spațiu.  = Date de ieșire = Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe linia &amp;lt;c...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dau &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; perechi de numere &amp;lt;code&amp;gt;n k&amp;lt;/code&amp;gt;. Pentru fiecare pereche să se calculeze numărul de divizori al lui .&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, iar pe următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; perechi de numere &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; separate printr-un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe linia &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1 ≤ i ≤ N&amp;lt;/code&amp;gt;, numărul &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt;, reprezentând numărul de divizori al lui &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt;, calculat pentru perechea cu numărul &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;. Pentru că acesta poate fi foarte mare se va afișa modulo &amp;lt;code&amp;gt;1.000.000.007&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ N ≤ 15.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
2 3&lt;br /&gt;
&lt;br /&gt;
4 4&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
20&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Pentru prima pereche: &amp;lt;code&amp;gt;P=54&amp;lt;/code&amp;gt;, iar &amp;lt;code&amp;gt;54&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; divizori.&lt;br /&gt;
&lt;br /&gt;
Pentru cea de-a doua pereche: &amp;lt;code&amp;gt;P=2560&amp;lt;/code&amp;gt;, iar &amp;lt;code&amp;gt;2560&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; divizori&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
999999999&lt;br /&gt;
&lt;br /&gt;
2 3&lt;br /&gt;
&lt;br /&gt;
4 4&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Conditii neideplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=15000):&lt;br /&gt;
        print(&amp;quot;Conditii neideplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def precalculation():&lt;br /&gt;
    global prime, nrp&lt;br /&gt;
    prime = []&lt;br /&gt;
    nrp = 0&lt;br /&gt;
    ciur = [0] * 31630&lt;br /&gt;
    &lt;br /&gt;
    for i in range(3, 31626, 2):&lt;br /&gt;
        if ciur[i] == 0:&lt;br /&gt;
            for j in range(i * i, 31626, 2 * i):&lt;br /&gt;
                ciur[j] = 1&lt;br /&gt;
            prime.append(i)&lt;br /&gt;
            nrp += 1&lt;br /&gt;
&lt;br /&gt;
def nrdivkn(N, m):&lt;br /&gt;
    P = 1&lt;br /&gt;
    p = 0&lt;br /&gt;
    &lt;br /&gt;
    while N % 2 == 0:&lt;br /&gt;
        N //= 2&lt;br /&gt;
        p += 1&lt;br /&gt;
    &lt;br /&gt;
    p = (p * m) % mod&lt;br /&gt;
    P = (P * p) % mod&lt;br /&gt;
    &lt;br /&gt;
    for d in range(nrp):&lt;br /&gt;
        if prime[d] * prime[d] &amp;gt; N:&lt;br /&gt;
            break&lt;br /&gt;
        while N % prime[d] == 0:&lt;br /&gt;
            p = 0&lt;br /&gt;
            while N % prime[d] == 0:&lt;br /&gt;
                p += 1&lt;br /&gt;
                N //= prime[d]&lt;br /&gt;
            if p:&lt;br /&gt;
                p = (p * m) % mod&lt;br /&gt;
                p = (p + 1) % mod&lt;br /&gt;
                P = (P * p) % mod&lt;br /&gt;
    &lt;br /&gt;
    if N &amp;gt; 1:&lt;br /&gt;
        p = 1&lt;br /&gt;
        p = (p * m) % mod&lt;br /&gt;
        p = (p + 1) % mod&lt;br /&gt;
        P = (P * p) % mod&lt;br /&gt;
    &lt;br /&gt;
    return P&lt;br /&gt;
&lt;br /&gt;
def nrdivk1(N):&lt;br /&gt;
    P = 1&lt;br /&gt;
    p = 0&lt;br /&gt;
    d = 0&lt;br /&gt;
    &lt;br /&gt;
    while N % 2 == 0:&lt;br /&gt;
        N //= 2&lt;br /&gt;
        p += 1&lt;br /&gt;
    &lt;br /&gt;
    p += 1&lt;br /&gt;
    P = (P * p) % mod&lt;br /&gt;
    &lt;br /&gt;
    for d in range(nrp):&lt;br /&gt;
        if prime[d] * prime[d] &amp;gt; N:&lt;br /&gt;
            break&lt;br /&gt;
        p = 0&lt;br /&gt;
        while N % prime[d] == 0:&lt;br /&gt;
            p += 1&lt;br /&gt;
            N //= prime[d]&lt;br /&gt;
        if p:&lt;br /&gt;
            p = (p + 1) % mod&lt;br /&gt;
            P = (P * p) % mod&lt;br /&gt;
    &lt;br /&gt;
    if N &amp;gt; 1:&lt;br /&gt;
        P = (P * 2) % mod&lt;br /&gt;
    &lt;br /&gt;
    return P&lt;br /&gt;
&lt;br /&gt;
def nrdivkn_2(N, m):&lt;br /&gt;
    P = 1&lt;br /&gt;
    p = 0&lt;br /&gt;
    &lt;br /&gt;
    while N % 2 == 0:&lt;br /&gt;
        N //= 2&lt;br /&gt;
        p += 1&lt;br /&gt;
    &lt;br /&gt;
    p = (p * m) % mod&lt;br /&gt;
    p = (p + 1) % mod&lt;br /&gt;
    P = (P * p) % mod&lt;br /&gt;
    &lt;br /&gt;
    for d in range(nrp):&lt;br /&gt;
        if prime[d] * prime[d] &amp;gt; N:&lt;br /&gt;
            break&lt;br /&gt;
        p = 0&lt;br /&gt;
        while N % prime[d] == 0:&lt;br /&gt;
            p += 1&lt;br /&gt;
            N //= prime[d]&lt;br /&gt;
        if p:&lt;br /&gt;
            p = (p * m) % mod&lt;br /&gt;
            p = (p + 1) % mod&lt;br /&gt;
            P = (P * p) % mod&lt;br /&gt;
    &lt;br /&gt;
    if N &amp;gt; 1:&lt;br /&gt;
        p = 1&lt;br /&gt;
        p = (p * m) % mod&lt;br /&gt;
        p = (p + 1) % mod&lt;br /&gt;
        P = (P * p) % mod&lt;br /&gt;
    &lt;br /&gt;
    return P&lt;br /&gt;
&lt;br /&gt;
def nrdivk1_2(N):&lt;br /&gt;
    P = 1&lt;br /&gt;
    p = 0&lt;br /&gt;
    d = 0&lt;br /&gt;
    &lt;br /&gt;
    while N % 2 == 0:&lt;br /&gt;
        N //= 2&lt;br /&gt;
        p += 1&lt;br /&gt;
    &lt;br /&gt;
    P = (P * p) % mod&lt;br /&gt;
    &lt;br /&gt;
    for d in range(nrp):&lt;br /&gt;
        if prime[d] * prime[d] &amp;gt; N:&lt;br /&gt;
            break&lt;br /&gt;
        p = 0&lt;br /&gt;
        while N % prime[d] == 0:&lt;br /&gt;
            p += 1&lt;br /&gt;
            N //= prime[d]&lt;br /&gt;
        if p:&lt;br /&gt;
            p = (p + 1) % mod&lt;br /&gt;
            P = (P * p) % mod&lt;br /&gt;
    &lt;br /&gt;
    if N &amp;gt; 1:&lt;br /&gt;
        P = (P * 2) % mod&lt;br /&gt;
    &lt;br /&gt;
    return P&lt;br /&gt;
&lt;br /&gt;
def solve(N, K):&lt;br /&gt;
    global mod&lt;br /&gt;
    if K % 2 == 0:&lt;br /&gt;
        nr1 = nrdivkn(K, N + 1)&lt;br /&gt;
        nr2 = nrdivk1(K + 1)&lt;br /&gt;
        return (nr1 * nr2) % mod&lt;br /&gt;
    else:&lt;br /&gt;
        nr1 = nrdivkn_2(K, N + 1)&lt;br /&gt;
        nr2 = nrdivk1_2(K + 1)&lt;br /&gt;
        return (nr1 * nr2) % mod&lt;br /&gt;
&lt;br /&gt;
def read_solve():&lt;br /&gt;
    global mod&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
        nr = int(f.readline())&lt;br /&gt;
        ver(nr)&lt;br /&gt;
        for _ in range(nr):&lt;br /&gt;
            n, k = map(int, f.readline().split())&lt;br /&gt;
            m = n + 1&lt;br /&gt;
            result = solve(n, k)&lt;br /&gt;
            g.write(str(result) + &#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
mod = 1000000007&lt;br /&gt;
precalculation()&lt;br /&gt;
read_solve()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0632_-_Iepuri&amp;diff=8995</id>
		<title>0632 - Iepuri</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0632_-_Iepuri&amp;diff=8995"/>
		<updated>2024-01-04T17:40:46Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Gigel are &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; iepuri pe care vrea să-i distribuie în &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; cuști astfel încât:  * toți iepurii să intre în cuști * fiecare cușcă să conțină cel puțin un iepure * să nu existe două cuști cu același număr de iepuri * diferența dintre numărul maxim de iepuri dintr-o cușcă și numărul minim de iepuri dintr-o cușcă să fie minimă  Determinați o modalitate de distribuire a iepurilor în cuști care să respecte condiții...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Gigel are &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; iepuri pe care vrea să-i distribuie în &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; cuști astfel încât:&lt;br /&gt;
&lt;br /&gt;
* toți iepurii să intre în cuști&lt;br /&gt;
* fiecare cușcă să conțină cel puțin un iepure&lt;br /&gt;
* să nu existe două cuști cu același număr de iepuri&lt;br /&gt;
* diferența dintre numărul maxim de iepuri dintr-o cușcă și numărul minim de iepuri dintr-o cușcă să fie minimă&lt;br /&gt;
&lt;br /&gt;
Determinați o modalitate de distribuire a iepurilor în cuști care să respecte condițiile de mai sus.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, reprezentând numărul de iepuri din fiecare cușcă..&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
3 10&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
2 3 5&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
999999999999 8&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n,p):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=100):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    if not(1&amp;lt;=p&amp;lt;=1000000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
n, p = map(int, input().split())&lt;br /&gt;
ver(n,p)&lt;br /&gt;
v = [0] * 105&lt;br /&gt;
&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    v[i] = i&lt;br /&gt;
    p -= i&lt;br /&gt;
&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    v[i] += p // n&lt;br /&gt;
&lt;br /&gt;
if p % n != 0:&lt;br /&gt;
    k = p % n&lt;br /&gt;
    i = n&lt;br /&gt;
    while i &amp;gt; 0 and k:&lt;br /&gt;
        v[i] += 1&lt;br /&gt;
        i -= 1&lt;br /&gt;
        k -= 1&lt;br /&gt;
&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    print(v[i], end=&amp;quot; &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0819_-_Generare_1&amp;diff=8994</id>
		<title>0819 - Generare 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0819_-_Generare_1&amp;diff=8994"/>
		<updated>2024-01-04T17:37:00Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se consideră următoarele operații, care se aplică numerelor naturale:  * &amp;lt;code&amp;gt;op 1&amp;lt;/code&amp;gt; – se adaugă la număr cifra &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; – din &amp;lt;code&amp;gt;13&amp;lt;/code&amp;gt; se obține &amp;lt;code&amp;gt;134&amp;lt;/code&amp;gt; * &amp;lt;code&amp;gt;op 2&amp;lt;/code&amp;gt; – se adaugă la număr cifra &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; – din &amp;lt;code&amp;gt;13&amp;lt;/code&amp;gt; se obține &amp;lt;code&amp;gt;130&amp;lt;/code&amp;gt; * &amp;lt;code&amp;gt;op 3&amp;lt;/code&amp;gt; – dacă numărul este par, se împarte la &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; – din &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; se obține &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;  Dându-se un număr natur...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se consideră următoarele operații, care se aplică numerelor naturale:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;op 1&amp;lt;/code&amp;gt; – se adaugă la număr cifra &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; – din &amp;lt;code&amp;gt;13&amp;lt;/code&amp;gt; se obține &amp;lt;code&amp;gt;134&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;op 2&amp;lt;/code&amp;gt; – se adaugă la număr cifra &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; – din &amp;lt;code&amp;gt;13&amp;lt;/code&amp;gt; se obține &amp;lt;code&amp;gt;130&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;op 3&amp;lt;/code&amp;gt; – dacă numărul este par, se împarte la &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; – din &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; se obține &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dându-se un număr natural &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, să se determine un șir de operații dintre cele de mai sus prin care, pornind de la valoarea &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;, se ajunge la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran un șir de valori din mulțimea &amp;lt;code&amp;gt;{1,2,3}&amp;lt;/code&amp;gt;, astfel încât, aplicând în ordine operațiile corespunzătoare se ajunge de la valoarea &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; la valoarea &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
3 3 2 3&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Pornim de la &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;. Se aplica &amp;lt;code&amp;gt;op 3&amp;lt;/code&amp;gt; și se obține &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;; se aplică &amp;lt;code&amp;gt;op 3&amp;lt;/code&amp;gt; și se obține &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;; se aplică &amp;lt;code&amp;gt;op 2&amp;lt;/code&amp;gt; și se obține &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;; se aplică &amp;lt;code&amp;gt;op 3&amp;lt;/code&amp;gt; și se obține &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
9999999999999&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=100000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
v = [0] * 10000&lt;br /&gt;
op = [0] * 10000&lt;br /&gt;
nv = 0&lt;br /&gt;
&lt;br /&gt;
# 1 -&amp;gt; se adauga 4&lt;br /&gt;
# 2 -&amp;gt; se adauga 0&lt;br /&gt;
# 3 -&amp;gt; se imparte la 2, daca este par&lt;br /&gt;
&lt;br /&gt;
n = int(input())&lt;br /&gt;
ver(n)&lt;br /&gt;
gata = False&lt;br /&gt;
nv += 1&lt;br /&gt;
v[nv] = n&lt;br /&gt;
&lt;br /&gt;
while not gata:&lt;br /&gt;
    if n == 4:&lt;br /&gt;
        gata = True&lt;br /&gt;
    else:&lt;br /&gt;
        if n % 10 == 4:&lt;br /&gt;
            nv += 1&lt;br /&gt;
            op[nv] = 1&lt;br /&gt;
            n //= 10&lt;br /&gt;
        elif n % 10 == 0:&lt;br /&gt;
            nv += 1&lt;br /&gt;
            op[nv] = 2&lt;br /&gt;
            n //= 10&lt;br /&gt;
        else:&lt;br /&gt;
            nv += 1&lt;br /&gt;
            op[nv] = 3&lt;br /&gt;
            n *= 2&lt;br /&gt;
        v[nv] = n&lt;br /&gt;
&lt;br /&gt;
for i in range(nv, 1, -1):&lt;br /&gt;
    print(op[i], end=&amp;quot; &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0655_-_Transf&amp;diff=8993</id>
		<title>0655 - Transf</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0655_-_Transf&amp;diff=8993"/>
		<updated>2024-01-04T17:30:31Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se dau două șiruri &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; cu câte &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale din mulțimea &amp;lt;code&amp;gt;{1,2}&amp;lt;/code&amp;gt;. Se dorește transformarea șirului &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; în șirul &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, având la dispoziție următoarele operații:  * interschimbarea a două elemente * înlocuirea unui element &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; sau a unui element &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.  Determinați pentru cele două șiruri numărul minim d...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dau două șiruri &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; cu câte &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale din mulțimea &amp;lt;code&amp;gt;{1,2}&amp;lt;/code&amp;gt;. Se dorește transformarea șirului &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; în șirul &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, având la dispoziție următoarele operații:&lt;br /&gt;
&lt;br /&gt;
* interschimbarea a două elemente&lt;br /&gt;
* înlocuirea unui element &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; sau a unui element &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Determinați pentru cele două șiruri numărul minim de operații prin care se transformă șirul &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; în șirul &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale șirului &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale șirului &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran numărul minim ce operații &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
2 2 1 1 2 &lt;br /&gt;
&lt;br /&gt;
2 2 2 1 1 &lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Prin interschimbarea în primul șir a elementului de pe poziția &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; cu cel de pe poziția &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; se obține al doilea șir.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
999999999999&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Conditii neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n):&lt;br /&gt;
    if not (1&amp;lt;=n&amp;lt;=1000):&lt;br /&gt;
        print(&amp;quot;Conditii neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
n = int(input())&lt;br /&gt;
ver(n)&lt;br /&gt;
a = list(map(int, input().split()))&lt;br /&gt;
b = list(map(int, input().split()))&lt;br /&gt;
&lt;br /&gt;
cnt1 = 0&lt;br /&gt;
cnt2 = 0&lt;br /&gt;
&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    if a[i - 1] != b[i - 1]:&lt;br /&gt;
        if a[i - 1] == 1:&lt;br /&gt;
            cnt1 += 1&lt;br /&gt;
        else:&lt;br /&gt;
            cnt2 += 1&lt;br /&gt;
&lt;br /&gt;
result = max(cnt1, cnt2)&lt;br /&gt;
print(result)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1728_-_K_Sum_Dif&amp;diff=8992</id>
		<title>1728 - K Sum Dif</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1728_-_K_Sum_Dif&amp;diff=8992"/>
		<updated>2024-01-04T17:26:44Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se dă un vector cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente și un număr &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;.  Se construiește un nou vector, cu &amp;lt;code&amp;gt;n-1&amp;lt;/code&amp;gt; elemente, ale cărui elemente vor fi diferenţa dintre suma și modulul diferenţei a două elemente alăturate din primul vector.  Apoi se construiește un alt vector, după aceeași regulă, ș. a. m. d.  Afișați suma elementelor celui de-al &amp;lt;code&amp;gt;k-1&amp;lt;/code&amp;gt;-lea vector construit prin această metodă.  = Date de intrare = Programul ci...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă un vector cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente și un număr &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Se construiește un nou vector, cu &amp;lt;code&amp;gt;n-1&amp;lt;/code&amp;gt; elemente, ale cărui elemente vor fi diferenţa dintre suma și modulul diferenţei a două elemente alăturate din primul vector.&lt;br /&gt;
&lt;br /&gt;
Apoi se construiește un alt vector, după aceeași regulă, ș. a. m. d.&lt;br /&gt;
&lt;br /&gt;
Afișați suma elementelor celui de-al &amp;lt;code&amp;gt;k-1&amp;lt;/code&amp;gt;-lea vector construit prin această metodă.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran suma cerută.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 10000&amp;lt;/code&amp;gt;&lt;br /&gt;
* cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale vectorului vor fi mai mici decât &amp;lt;code&amp;gt;1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;k≤50&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
6 3&lt;br /&gt;
&lt;br /&gt;
5 2 4 9 3 1&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
32&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Prelucrarea primului element al noului vector se face astfel: &amp;lt;code&amp;gt;(5+2)-(5-2)=4&amp;lt;/code&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
Elementele primului vector construit vor fi: &amp;lt;code&amp;gt;4 4 8 6 2&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Elementele celui de-al 2-lea vector construit vor fi: &amp;lt;code&amp;gt;8 8 12 4&amp;lt;/code&amp;gt; , iar suma lor va fi &amp;lt;code&amp;gt;32&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
99999999 1&lt;br /&gt;
&lt;br /&gt;
5 2 4 9 3 1&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Conditions not met.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verify_conditions(n, k, v):&lt;br /&gt;
    if 1 &amp;lt;= n &amp;lt;= 10000 and k &amp;lt;= 50 and all(0 &amp;lt;= x &amp;lt; 1000 for x in v):&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
n, k = map(int, input().split())&lt;br /&gt;
v = list(map(int, input().split()))&lt;br /&gt;
&lt;br /&gt;
if verify_conditions(n, k, v):&lt;br /&gt;
    while k &amp;gt; 1:&lt;br /&gt;
        for i in range(n - 1):&lt;br /&gt;
            v[i] += (v[i + 1] - abs(v[i] - v[i + 1]))&lt;br /&gt;
        n -= 1&lt;br /&gt;
        k -= 1&lt;br /&gt;
&lt;br /&gt;
    s = sum(v[:n])&lt;br /&gt;
    print(s)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Conditions not met.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2767_-_Masterpiece_003&amp;diff=8991</id>
		<title>2767 - Masterpiece 003</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2767_-_Masterpiece_003&amp;diff=8991"/>
		<updated>2024-01-04T17:20:09Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se consideră două numere naturale &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;.  Se consideră &amp;lt;code&amp;gt;P = { p1&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;, p2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;, p3&amp;lt;/code&amp;gt;  &amp;lt;code&amp;gt;… pk&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt; , șirul primelor &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; numere prime.  Se consideră mulțimea &amp;lt;code&amp;gt;S = { x | x = p1e1&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;* p2e2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;* … * pkek&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt; unde &amp;lt;code&amp;gt;e1&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;, e2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;, e3&amp;lt;/code&amp;gt;  &amp;lt;code&amp;gt;… ek&amp;lt;/code&amp;gt; sunt numere naturale.  Să se afișeze în...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se consideră două numere naturale &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Se consideră &amp;lt;code&amp;gt;P = { p1&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;, p2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;, p3&amp;lt;/code&amp;gt;  &amp;lt;code&amp;gt;… pk&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt; , șirul primelor &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; numere prime.&lt;br /&gt;
&lt;br /&gt;
Se consideră mulțimea &amp;lt;code&amp;gt;S = { x | x = p1e1&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;* p2e2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;* … * pkek&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt; unde &amp;lt;code&amp;gt;e1&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;, e2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;, e3&amp;lt;/code&amp;gt;  &amp;lt;code&amp;gt;… ek&amp;lt;/code&amp;gt; sunt numere naturale.&lt;br /&gt;
&lt;br /&gt;
Să se afișeze în ordine crescătoare primele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente mulțimii &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul afișează pe ecran, în ordine crescătoare, separate prin câte un spațiu, primele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale mulțimii &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ k ≤ 10&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
40 5&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
1 2 3 4 5 6 7 8 9 10 11 12 14 15 16 18 20 21 22 24 25 27 28 30 32 33 35 36 40 42 44 45 48 49 50 54 55 56 60 63 &lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Oricare dintre numerele afișate conțin în descompunerea lor în factori primi doar factori din mulțimea &amp;lt;code&amp;gt;{2, 3, 5, 7, 11}&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Din șirul afișat lipsesc numerele care au în descompunerea lor în factori primi și alte numere în afară de &amp;lt;code&amp;gt;2, 3, 5, 7, 11&amp;lt;/code&amp;gt;. De exemplu numărul &amp;lt;code&amp;gt;26&amp;lt;/code&amp;gt; nu va fi afișat pentru că, în decompunerea lui apare factorul &amp;lt;code&amp;gt;13&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
40 99&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verify(n, k):&lt;br /&gt;
    if not (1&amp;lt;=n&amp;lt;=100000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    if not (1&amp;lt;=k&amp;lt;=10):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
n, k = map(int, input().split())&lt;br /&gt;
&lt;br /&gt;
verify(n,k)&lt;br /&gt;
&lt;br /&gt;
s = [0] * (n + 1)&lt;br /&gt;
p = [0, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29]&lt;br /&gt;
d = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]&lt;br /&gt;
c = [0, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29]&lt;br /&gt;
&lt;br /&gt;
s[1] = 1&lt;br /&gt;
&lt;br /&gt;
for i in range(2, n + 1):&lt;br /&gt;
    minim = c[1]&lt;br /&gt;
    for j in range(1, k + 1):&lt;br /&gt;
        if c[j] &amp;lt; minim:&lt;br /&gt;
            minim = c[j]&lt;br /&gt;
    &lt;br /&gt;
    s[i] = minim&lt;br /&gt;
    &lt;br /&gt;
    for j in range(1, k + 1):&lt;br /&gt;
        if c[j] == minim:&lt;br /&gt;
            d[j] += 1&lt;br /&gt;
            c[j] = s[d[j]] * p[j]&lt;br /&gt;
&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    print(s[i], end=&#039; &#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1102_-_Bile_2&amp;diff=8990</id>
		<title>1102 - Bile 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1102_-_Bile_2&amp;diff=8990"/>
		<updated>2024-01-04T17:09:03Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Pe o masă cad &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; bile săltăreţe. Fiecare este lăsată să cadă liber de la o înălţime &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt;, diferită pentru fiecare bilă. Toate bilele cad simultan, cu o viteză constantă &amp;lt;code&amp;gt;(1m/s)&amp;lt;/code&amp;gt; .  În momentul în care bila &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; atinge masa, tendinţa ei va fi să se ridice în aer până la înălţimea &amp;lt;code&amp;gt;h - k&amp;lt;/code&amp;gt;, după care aceasta cade din nou. De fiecare dată când o bilă atinge masa, aceasta va tinde să urce la o înl...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pe o masă cad &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; bile săltăreţe. Fiecare este lăsată să cadă liber de la o înălţime &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt;, diferită pentru fiecare bilă. Toate bilele cad simultan, cu o viteză constantă &amp;lt;code&amp;gt;(1m/s)&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
În momentul în care bila &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; atinge masa, tendinţa ei va fi să se ridice în aer până la înălţimea &amp;lt;code&amp;gt;h - k&amp;lt;/code&amp;gt;, după care aceasta cade din nou. De fiecare dată când o bilă atinge masa, aceasta va tinde să urce la o înlăţime cu &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; mai mică decât cea la care a urcat anterior. Dupa multe sărituri, bilele pot obosi şi nu vor mai sări. Când bilele sar în sus, vor urca tot cu aceeaşi viteza constantă.&lt;br /&gt;
&lt;br /&gt;
Dându-se &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; pentru fiecare dintre cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; bile, să se răspundă la &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; întrebări de forma: La ce înălţime faţă de masă se va afla bila &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; în momentul &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; ?&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie 2 numere naturale &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;. Pe următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii se află o pereche de numere, &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; . Următoarele &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; linii vor conţine &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; numere naturale &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; cu semnificaţiile de mai sus.&lt;br /&gt;
&lt;br /&gt;
= Date de ieşire =&lt;br /&gt;
În fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; se vor afişa &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; linii, răspunsurile la cele &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; întrebări.&lt;br /&gt;
&lt;br /&gt;
= Restricţii =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n, m ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2 3&lt;br /&gt;
&lt;br /&gt;
5 1&lt;br /&gt;
&lt;br /&gt;
8 2&lt;br /&gt;
&lt;br /&gt;
1 4&lt;br /&gt;
&lt;br /&gt;
1 7&lt;br /&gt;
&lt;br /&gt;
2 16&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Bila &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; cade de la înălţimea &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; timp de &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; secunde apoi se opreşte la înălţimea &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Bila &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; cade de la înălţimea &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; şi atinge pământul, iar în cele &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; secunde rămase ajunge la înălţimea &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Bila &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; cade de la înălţimea &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;, atinge pământul şi apoi ajunge la noua sa înălţime maximă, &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;, în &amp;lt;code&amp;gt;14&amp;lt;/code&amp;gt; secunde. în cele &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; secunde rămase, bila apucă să coboare la înălţimea &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
999999999999 3&lt;br /&gt;
&lt;br /&gt;
5 1&lt;br /&gt;
&lt;br /&gt;
8 2&lt;br /&gt;
&lt;br /&gt;
1 4&lt;br /&gt;
&lt;br /&gt;
1 7&lt;br /&gt;
&lt;br /&gt;
2 16&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constraints not met!&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verify_constraints(n, m):&lt;br /&gt;
    return 1 &amp;lt;= n &amp;lt;= 100000 and 1 &amp;lt;= m &amp;lt;= 100000&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        N = 100005&lt;br /&gt;
        h = [0] * N&lt;br /&gt;
        k = [0] * N&lt;br /&gt;
&lt;br /&gt;
        n, m = map(int, fin.readline().split())&lt;br /&gt;
&lt;br /&gt;
        if not verify_constraints(n, m):&lt;br /&gt;
            print(&amp;quot;Constraints not met!&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        for i in range(1, n + 1):&lt;br /&gt;
            h[i], k[i] = map(int, fin.readline().split())&lt;br /&gt;
&lt;br /&gt;
        for _ in range(m):&lt;br /&gt;
            x, t = map(int, fin.readline().split())&lt;br /&gt;
&lt;br /&gt;
            crt = h[x]&lt;br /&gt;
            height = h[x]&lt;br /&gt;
&lt;br /&gt;
            if t &amp;lt;= h[x]:&lt;br /&gt;
                fout.write(f&amp;quot;{h[x] - t}\n&amp;quot;)&lt;br /&gt;
                continue&lt;br /&gt;
&lt;br /&gt;
            t -= h[x]&lt;br /&gt;
            height = 0&lt;br /&gt;
            crt -= k[x]&lt;br /&gt;
&lt;br /&gt;
            while t and crt:&lt;br /&gt;
                if t &amp;lt;= crt:&lt;br /&gt;
                    height += t&lt;br /&gt;
                    t = 0&lt;br /&gt;
                else:&lt;br /&gt;
                    t -= crt&lt;br /&gt;
                    height = crt&lt;br /&gt;
&lt;br /&gt;
                if not t:&lt;br /&gt;
                    break&lt;br /&gt;
&lt;br /&gt;
                if t &amp;lt;= crt:&lt;br /&gt;
                    height -= t&lt;br /&gt;
                    t = 0&lt;br /&gt;
                else:&lt;br /&gt;
                    t -= crt&lt;br /&gt;
                    height = 0&lt;br /&gt;
&lt;br /&gt;
                crt = max(0, crt - k[x])&lt;br /&gt;
&lt;br /&gt;
            fout.write(f&amp;quot;{height}\n&amp;quot;)&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>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3775_-_Prosum&amp;diff=8988</id>
		<title>3775 - Prosum</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3775_-_Prosum&amp;diff=8988"/>
		<updated>2024-01-04T16:49:30Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Se dau &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale &amp;lt;code&amp;gt;a[1], a[2], ..., a[N]&amp;lt;/code&amp;gt; şi un număr natural nenul &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;.  = Cerința = Să se determine numărul perechilor de indici &amp;lt;code&amp;gt;(i, j)&amp;lt;/code&amp;gt;, cu &amp;lt;code&amp;gt;i &amp;lt; j&amp;lt;/code&amp;gt;, cu proprietatea că numărul &amp;lt;code&amp;gt;a[i]*a[j]+a[i]+a[j]&amp;lt;/code&amp;gt; este divizibil cu &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;.  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numerele naturale &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, iar pe următoarea l...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se dau &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale &amp;lt;code&amp;gt;a[1], a[2], ..., a[N]&amp;lt;/code&amp;gt; şi un număr natural nenul &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Să se determine numărul perechilor de indici &amp;lt;code&amp;gt;(i, j)&amp;lt;/code&amp;gt;, cu &amp;lt;code&amp;gt;i &amp;lt; j&amp;lt;/code&amp;gt;, cu proprietatea că numărul &amp;lt;code&amp;gt;a[i]*a[j]+a[i]+a[j]&amp;lt;/code&amp;gt; este divizibil cu &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numerele naturale &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, iar pe următoarea linie cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale &amp;lt;code&amp;gt;a[1], a[2], ..., a[N]&amp;lt;/code&amp;gt;, separate prin spaţiu.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie numărul perechilor de indici &amp;lt;code&amp;gt;(i, j)&amp;lt;/code&amp;gt;, cu &amp;lt;code&amp;gt;i &amp;lt; j&amp;lt;/code&amp;gt;, cu proprietatea că numărul &amp;lt;code&amp;gt;a[i]*a[j]+a[i]+a[j]&amp;lt;/code&amp;gt; este divizibil cu &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ N ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0 ≤ a[i] ≤ 1018&amp;lt;/code&amp;gt;, pentru orice &amp;lt;code&amp;gt;i∈{1, 2, ..., N}&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ M ≤ 1017&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
4 13&lt;br /&gt;
&lt;br /&gt;
6 15 6 1&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Există două perechi de indici având proprietatea cerută, &amp;lt;code&amp;gt;(1,4)&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;(3,4)&amp;lt;/code&amp;gt;, deoarece avem &amp;lt;code&amp;gt;6*1+6+1=13&amp;lt;/code&amp;gt;, care este divizibil cu &amp;lt;code&amp;gt;M=13&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
99999999999999 13&lt;br /&gt;
&lt;br /&gt;
6 15 6 1&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Invalid input. Please check the constraints.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def is_valid_input(N, M, numbers):&lt;br /&gt;
    if not (2 &amp;lt;= N &amp;lt;= 100000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= M &amp;lt;= 10**17):&lt;br /&gt;
        return False&lt;br /&gt;
    if not all(0 &amp;lt;= a_i &amp;lt;= 10**18 for a_i in numbers):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def count_pairs_with_property(N, M, numbers):&lt;br /&gt;
    count = 0&lt;br /&gt;
    for i in range(N):&lt;br /&gt;
        for j in range(i + 1, N):&lt;br /&gt;
            if (numbers[i] * numbers[j] + numbers[i] + numbers[j]) % M == 0:&lt;br /&gt;
                count += 1&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        N, M = map(int, fin.readline().split())&lt;br /&gt;
        numbers = list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    if not is_valid_input(N, M, numbers):&lt;br /&gt;
        print(&amp;quot;Invalid input. Please check the constraints.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    result = count_pairs_with_property(N, M, numbers)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(str(result) + &amp;quot;\n&amp;quot;)&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>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3401_-_Spp&amp;diff=8953</id>
		<title>3401 - Spp</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3401_-_Spp&amp;diff=8953"/>
		<updated>2024-01-04T03:43:19Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: După o zi plină, trei băieți se joacă cu numere. În fiecare seară, unul dintre ei alege un număr &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, iar altul un număr &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; mai mare sau egal cu &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;. Al treilea propune ceva mai interesant. Astfel, el alege să le spună aproape instantaneu suma pătratelor perfecte de la &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. Voi trebuie să rezolvați ceva asemănător, doar că știți numai ce zice primul și ultimul băiat. Pentru a-i verifica dacă...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;După o zi plină, trei băieți se joacă cu numere. În fiecare seară, unul dintre ei alege un număr &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, iar altul un număr &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; mai mare sau egal cu &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;. Al treilea propune ceva mai interesant. Astfel, el alege să le spună aproape instantaneu suma pătratelor perfecte de la &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. Voi trebuie să rezolvați ceva asemănător, doar că știți numai ce zice primul și ultimul băiat. Pentru a-i verifica dacă greșesc la calcule, în schimb, trebuie să găsiți numărul pe care l-ar putea spune al doilea.&lt;br /&gt;
&lt;br /&gt;
Formal, pentru două numere &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; se definește &amp;lt;code&amp;gt;SPP(x,y) = x2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;+ (x+1)2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;+...+ y2&amp;lt;/code&amp;gt; (suma pătratelor perfecte de la &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Se dau &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; întrebări de tipul &amp;lt;code&amp;gt;x p&amp;lt;/code&amp;gt; și se cere cel mai mic &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; mai mare sau egal ca &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; pentru care &amp;lt;code&amp;gt;SPP(x,y) ≥ p2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Să se calculeze pentru fiecare întrebare &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; minimum, pentru care relația este satisfăcută.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie un număr natural &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt;. Pe liniile &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;Q+1&amp;lt;/code&amp;gt; se află câte o pereche &amp;lt;code&amp;gt;x p&amp;lt;/code&amp;gt; care satisface restricțiile.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține răspunsul la fiecare întrebare.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Q ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
1 5&lt;br /&gt;
&lt;br /&gt;
10 19&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
12&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
1^2 + 2^2 + 3^2 + 4^2 = 30 &amp;gt;= 5^2&lt;br /&gt;
&lt;br /&gt;
10^2 + 11^2 + 12^2  = 365 &amp;gt;= 19^2&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999999999&lt;br /&gt;
&lt;br /&gt;
1 5&lt;br /&gt;
&lt;br /&gt;
10 19&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Error: Q is not within the valid range (1 &amp;lt;= Q &amp;lt;= 100,000)&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
def verify_constraints(Q):&lt;br /&gt;
    if not (1 &amp;lt;= Q &amp;lt;= 100000):&lt;br /&gt;
        sys.exit(&amp;quot;Error: Q is not within the valid range (1 &amp;lt;= Q &amp;lt;= 100,000)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
    Q = int(f.readline())&lt;br /&gt;
    verify_constraints(Q)&lt;br /&gt;
    queries = [tuple(map(int, f.readline().split())) for _ in range(Q)]&lt;br /&gt;
&lt;br /&gt;
    for x, p in queries:&lt;br /&gt;
        def binarys(x, st, dr, pp):&lt;br /&gt;
            sol = 0&lt;br /&gt;
            px = (1 * x * (x + 1) * (2 * x + 1)) // 6&lt;br /&gt;
            while st &amp;lt;= dr:&lt;br /&gt;
                mid = (st + dr) // 2&lt;br /&gt;
                py = (1 * mid * (mid + 1) * (2 * mid + 1)) // 6&lt;br /&gt;
&lt;br /&gt;
                if py - px &amp;gt;= pp:&lt;br /&gt;
                    sol = mid&lt;br /&gt;
                    dr = mid - 1&lt;br /&gt;
                else:&lt;br /&gt;
                    st = mid + 1&lt;br /&gt;
            return sol&lt;br /&gt;
&lt;br /&gt;
        y = binarys(x - 1, x, x + 1500000, 1 * p * p)&lt;br /&gt;
        g.write(str(y) + &#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2960_-_Abx&amp;diff=8952</id>
		<title>2960 - Abx</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2960_-_Abx&amp;diff=8952"/>
		<updated>2024-01-04T03:36:03Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Un număr natural &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; se numește putere dacă există două numere naturale &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a ≥ 1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b ≥ 2&amp;lt;/code&amp;gt; astfel încât . De exemplu, numerele &amp;lt;code&amp;gt;32&amp;lt;/code&amp;gt; , &amp;lt;code&amp;gt;169&amp;lt;/code&amp;gt; , &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; sunt puteri ( ,  ,  ), iar &amp;lt;code&amp;gt;72&amp;lt;/code&amp;gt; , &amp;lt;code&amp;gt;2000&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;31&amp;lt;/code&amp;gt; nu sunt puteri.  Se citesc numerele naturale &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; , &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; și un șir de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale  din intervalul &amp;lt;c...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Un număr natural &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; se numește putere dacă există două numere naturale &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a ≥ 1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b ≥ 2&amp;lt;/code&amp;gt; astfel încât . De exemplu, numerele &amp;lt;code&amp;gt;32&amp;lt;/code&amp;gt; , &amp;lt;code&amp;gt;169&amp;lt;/code&amp;gt; , &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; sunt puteri ( ,  ,  ), iar &amp;lt;code&amp;gt;72&amp;lt;/code&amp;gt; , &amp;lt;code&amp;gt;2000&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;31&amp;lt;/code&amp;gt; nu sunt puteri.&lt;br /&gt;
&lt;br /&gt;
Se citesc numerele naturale &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; , &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; și un șir de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale  din intervalul &amp;lt;code&amp;gt;[1,M]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Pentru fiecare din cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere  determinați câte un număr natural  din intervalul &amp;lt;code&amp;gt;[1,M]&amp;lt;/code&amp;gt;, cu proprietatea că  este o putere și pentru orice altă putere &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; din intervalul &amp;lt;code&amp;gt;[1,M]&amp;lt;/code&amp;gt; este îndeplinită condiția , unde &amp;lt;code&amp;gt;|x|&amp;lt;/code&amp;gt; reprezintă valoarea absolută a lui &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; (modulul).&lt;br /&gt;
&lt;br /&gt;
Dacă există două puteri egal depărtate de  se va alege puterea cea mai mică. De exemplu pentru numărul &amp;lt;code&amp;gt;26&amp;lt;/code&amp;gt;, dintre puterile &amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;27&amp;lt;/code&amp;gt; va fi ales numărul &amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie două numere &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, iar pe fiecare dintre următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii se găsește câte un număr natural  (&amp;lt;code&amp;gt;1 ≤ i ≤ N&amp;lt;/code&amp;gt;), cu semnificația de mai sus. Numerele aflate pe aceeași linie a fișierului 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 &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii, pe fiecare linie &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;1 ≤ i ≤ N&amp;lt;/code&amp;gt;) aflându-se numărul natural  cu semnificația din enunț.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* 1&amp;lt;=n&amp;lt;=5000&lt;br /&gt;
* 10&amp;lt;=m&amp;lt;=10^18&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
8 1000&lt;br /&gt;
&lt;br /&gt;
345&lt;br /&gt;
&lt;br /&gt;
99&lt;br /&gt;
&lt;br /&gt;
999&lt;br /&gt;
&lt;br /&gt;
500&lt;br /&gt;
&lt;br /&gt;
123&lt;br /&gt;
&lt;br /&gt;
124&lt;br /&gt;
&lt;br /&gt;
99&lt;br /&gt;
&lt;br /&gt;
256&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
343&lt;br /&gt;
&lt;br /&gt;
100&lt;br /&gt;
&lt;br /&gt;
1000&lt;br /&gt;
&lt;br /&gt;
512&lt;br /&gt;
&lt;br /&gt;
121&lt;br /&gt;
&lt;br /&gt;
125&lt;br /&gt;
&lt;br /&gt;
100&lt;br /&gt;
&lt;br /&gt;
256&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
343 = 7^3&lt;br /&gt;
&lt;br /&gt;
100 = 10^2&lt;br /&gt;
&lt;br /&gt;
1000 = 10^3&lt;br /&gt;
&lt;br /&gt;
512 = 2^9&lt;br /&gt;
&lt;br /&gt;
121 = 11^2&lt;br /&gt;
&lt;br /&gt;
125 = 5^3&lt;br /&gt;
&lt;br /&gt;
100 = 10^2&lt;br /&gt;
&lt;br /&gt;
256 = 2^8&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
999999999999 1000&lt;br /&gt;
&lt;br /&gt;
345&lt;br /&gt;
&lt;br /&gt;
99&lt;br /&gt;
&lt;br /&gt;
999&lt;br /&gt;
&lt;br /&gt;
500&lt;br /&gt;
&lt;br /&gt;
123&lt;br /&gt;
&lt;br /&gt;
124&lt;br /&gt;
&lt;br /&gt;
99&lt;br /&gt;
&lt;br /&gt;
256&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Error: n is not within the valid range (1 &amp;lt;= n &amp;lt;= 5000)&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
def verify_constraints(n, m):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 5000):&lt;br /&gt;
        sys.exit(&amp;quot;Error: n is not within the valid range (1 &amp;lt;= n &amp;lt;= 5000)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if not (10 &amp;lt;= m &amp;lt;= 10**18):&lt;br /&gt;
        sys.exit(&amp;quot;Error: m is not within the valid range (1 &amp;lt;= m &amp;lt;= 10^18)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def lgput(x, y):&lt;br /&gt;
    ans = 1&lt;br /&gt;
    aux = x&lt;br /&gt;
    p = 1&lt;br /&gt;
    while p &amp;lt;= y:&lt;br /&gt;
        if y &amp;amp; p:&lt;br /&gt;
            ans *= aux&lt;br /&gt;
        aux *= aux&lt;br /&gt;
        p &amp;lt;&amp;lt;= 1&lt;br /&gt;
    return ans&lt;br /&gt;
&lt;br /&gt;
def cautb(x, put):&lt;br /&gt;
    st = 1&lt;br /&gt;
    dr = int(x ** (1 / put))&lt;br /&gt;
    while st &amp;lt;= dr:&lt;br /&gt;
        mij = (st + dr) // 2&lt;br /&gt;
        if lgput(mij, put) &amp;gt; x:&lt;br /&gt;
            dr = mij - 1&lt;br /&gt;
        else:&lt;br /&gt;
            st = mij + 1&lt;br /&gt;
    return dr&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
    n, m = map(int, f.readline().split())&lt;br /&gt;
    verify_constraints(n, m)&lt;br /&gt;
    a_values = [int(f.readline()) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    for a in a_values:&lt;br /&gt;
        sol = 0&lt;br /&gt;
        dif = m + 100&lt;br /&gt;
        &lt;br /&gt;
        for j in range(2, 61):&lt;br /&gt;
            y = cautb(a, j)&lt;br /&gt;
            z = lgput(y, j)&lt;br /&gt;
            &lt;br /&gt;
            if abs(a - z) &amp;lt;= dif and z &amp;lt;= m:&lt;br /&gt;
                sol = z&lt;br /&gt;
                dif = abs(a - z)&lt;br /&gt;
            &lt;br /&gt;
            z = lgput(y + 1, j)&lt;br /&gt;
            &lt;br /&gt;
            if abs(a - z) &amp;lt; dif and z &amp;lt;= m:&lt;br /&gt;
                sol = z&lt;br /&gt;
                dif = abs(a - z)&lt;br /&gt;
        &lt;br /&gt;
        g.write(str(sol) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2455_-_Plaja_2&amp;diff=8951</id>
		<title>2455 - Plaja 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2455_-_Plaja_2&amp;diff=8951"/>
		<updated>2024-01-04T03:16:41Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Zizi îşi va petrece concediul în această vară într-o frumoasă staţiune de la Marea Neagră. Acolo va sta &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; zile. Zilele  sunt numerotate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;. În fiecare dintre cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; zile de concediu, ea intenţionează să facă plajă un număr cât  mai mare de unităţi de timp. Va trebui să ţină seama totuşi de prognoza meteo, care este nefavorabilă în &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; dintre cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; zile, respectiv î...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zizi îşi va petrece concediul în această vară într-o frumoasă staţiune de la Marea Neagră. Acolo va sta &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; zile. Zilele&lt;br /&gt;
&lt;br /&gt;
sunt numerotate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;. În fiecare dintre cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; zile de concediu, ea intenţionează să facă plajă un număr cât&lt;br /&gt;
&lt;br /&gt;
mai mare de unităţi de timp. Va trebui să ţină seama totuşi de prognoza meteo, care este nefavorabilă în &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; dintre cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; zile, respectiv în zilele &amp;lt;code&amp;gt;z[1]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;z[2]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;z[k]&amp;lt;/code&amp;gt;. În fiecare dintre aceste &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; zile va ploua sau va fi prea mult soare, iar Zizi va trebui să-şi limiteze timpii de plajă la cel mult &amp;lt;code&amp;gt;t[1]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;t[2]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;t[k]&amp;lt;/code&amp;gt; unităţi de timp. De asemenea, din motive de confort fizic, Zizi doreşte ca diferenţa în valoare absolută a timpilor de plajă între oricare două zile consecutive să nu depăşească &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Cunoscând zilele &amp;lt;code&amp;gt;z[1]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;z[2]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;z[k]&amp;lt;/code&amp;gt; în care există limitările &amp;lt;code&amp;gt;t[1]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;t[2]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;t[k]&amp;lt;/code&amp;gt; pentru timpul de plajă şi valoarea &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt;, să se determine numărul maxim de unităţi de timp pe care Zizi le poate petrece la plajă într-o singură zi dintre cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; zile de concediu.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie trei numere naturale &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; separate printr-un spaţiu, reprezentând numărul de zile de concediu, numărul de zile în care există limitări pentru timpul de plajă şi diferenţa maximă&lt;br /&gt;
&lt;br /&gt;
admisă a timpilor de plajă pentru oricare două zile consecutive. Pe fiecare dintre următoarele &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; linii se află câte două numere &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt;, despărțite printr-un spațiu, reprezentând numărul de ordine al unei zile cu limitări pentru timpul de plajă, respectiv limita de timp pentru ziua respectivă. Valorile &amp;lt;code&amp;gt;z[1]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;z[2]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;z[k]&amp;lt;/code&amp;gt; sunt în ordine strict crescătoare.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie un singur număr natural &amp;lt;code&amp;gt;tmax&amp;lt;/code&amp;gt;, reprezentând numărul maxim de&lt;br /&gt;
&lt;br /&gt;
unităţi de timp pe care Zizi le poate petrece făcând plajă într-una din cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; zile de concediu.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ N ≤ 1 000 000 000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ K ≤ 100 000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
3 1 3&lt;br /&gt;
&lt;br /&gt;
1 2&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
În prima zi timpul de plajă este limitat la &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; unități de timp. În ziua a doua timpul maxim de plajă este &amp;lt;code&amp;gt;2 + 3&amp;lt;/code&amp;gt;, iar în ziua a treia, timpul maxim este &amp;lt;code&amp;gt;2 + 3 + 3 = 8&amp;lt;/code&amp;gt; unități de timp.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
5 2 11&lt;br /&gt;
&lt;br /&gt;
2 2&lt;br /&gt;
&lt;br /&gt;
4 5&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
16&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
În ziua &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; timpul de plajă este limitat la &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; unități de timp, iar în zilele &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; nu există limitare. Atunci timpul maxim de plajă pentru zilele &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;2 + 11 = 13&amp;lt;/code&amp;gt;. În ziua &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; timpul de plajă este limitat la &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; unități de timp, iar în ziua &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; nu există limitare. Deci în ziua &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; timpul maxim de plajă este &amp;lt;code&amp;gt;5 + 11 = 16&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
99999999999999999999 2 11&lt;br /&gt;
&lt;br /&gt;
2 2&lt;br /&gt;
&lt;br /&gt;
4 5&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Error: N is not within the valid range (1 &amp;lt;= N &amp;lt;= 1,000,000,000)&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# prof. Constantin Galatan&lt;br /&gt;
# solutie O(K * log T)&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
def verify_constraints(N, K):&lt;br /&gt;
    if not (1 &amp;lt;= N &amp;lt;= 1000000000):&lt;br /&gt;
        sys.exit(&amp;quot;Error: N is not within the valid range (1 &amp;lt;= N &amp;lt;= 1,000,000,000)&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    if not (1 &amp;lt;= K &amp;lt;= 100000):&lt;br /&gt;
        sys.exit(&amp;quot;Error: K is not within the valid range (1 &amp;lt;= K &amp;lt;= 100,000)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def try_time(t0, i):&lt;br /&gt;
    return d[i + 1] - d[i] &amp;gt;= (t0 - t[i] + T - 1) // T + (t0 - t[i + 1] + T - 1) // T&lt;br /&gt;
&lt;br /&gt;
input_file = open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
output_file = open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
N, K, T = map(int, input_file.readline().split())&lt;br /&gt;
verify_constraints(N, K)&lt;br /&gt;
&lt;br /&gt;
d = [0] * (K + 1)&lt;br /&gt;
t = [0] * (K + 1)&lt;br /&gt;
&lt;br /&gt;
for i in range(1, K + 1):&lt;br /&gt;
    d[i], t[i] = map(int, input_file.readline().split())&lt;br /&gt;
&lt;br /&gt;
for i in range(1, K):&lt;br /&gt;
    t[i + 1] = min(t[i + 1], t[i] + (d[i + 1] - d[i]) * T)&lt;br /&gt;
&lt;br /&gt;
for i in range(K - 1, 0, -1):&lt;br /&gt;
    t[i] = min(t[i], t[i + 1] + (d[i + 1] - d[i]) * T)&lt;br /&gt;
&lt;br /&gt;
res = 0&lt;br /&gt;
for i in range(1, K):&lt;br /&gt;
    l, r = max(t[i], t[i + 1]), 1 * N * T&lt;br /&gt;
    tmp = 0&lt;br /&gt;
    while l &amp;lt;= r:&lt;br /&gt;
        m = (l + r) // 2&lt;br /&gt;
        if try_time(m, i):&lt;br /&gt;
            l = m + 1&lt;br /&gt;
            tmp = m&lt;br /&gt;
        else:&lt;br /&gt;
            r = m - 1&lt;br /&gt;
    res = max(res, tmp)&lt;br /&gt;
&lt;br /&gt;
res = max(res, max(t[K] + (N - d[K]) * T, t[1] + (d[1] - 1) * T))&lt;br /&gt;
output_file.write(str(res))&lt;br /&gt;
&lt;br /&gt;
input_file.close()&lt;br /&gt;
output_file.close()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2453_-_Rosii_Mici&amp;diff=8950</id>
		<title>2453 - Rosii Mici</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2453_-_Rosii_Mici&amp;diff=8950"/>
		<updated>2024-01-04T02:25:20Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Dan este un mare pasionat al fructelor, printre preferatele sale fiind strugurii şi pepenii. Însă recent şi-a descoperit și pasiunea pentru legume, în special pentru roşii, dar mai ales roşiile mici. Spre norocul lui, grădina bunicului este plină de roşii. Grădina are forma unei matrice cu &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; coloane cu elemente numere naturale, nu neapărat distincte, unde fiecare element din matrice reprezintă dimensiunea unei roşii. Matric...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dan este un mare pasionat al fructelor, printre preferatele sale fiind strugurii şi pepenii. Însă recent şi-a descoperit și pasiunea pentru legume, în special pentru roşii, dar mai ales roşiile mici. Spre norocul lui, grădina bunicului este plină de roşii. Grădina are forma unei matrice cu &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; coloane cu elemente numere naturale, nu neapărat distincte, unde fiecare element din matrice reprezintă dimensiunea unei roşii. Matricea are proprietatea că oricare coloană are valorile ordonate crescător de sus în jos, adică de la prima spre ultima linie. Bunicul său îi cere să rezolve &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; sarcini. Pentru fiecare sarcină, Dan primeşte un număr natural &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; şi trebuie să găsească o submatrice de arie maximă care începe de pe linia &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; a matricei care reprezintă grădina şi are toate elementele mai mici sau egale decât &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;. Pentru determinarea submatricei cerute, Dan are voie să mute toate valorile unei coloane în fața oricărei alte coloane. De asemenea, îi este permis să facă oricâte mutări de tipul acesta.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Să se calculeze aria maximă a unei submatrice care respectă specificațiile din enunț, pentru fiecare din cele &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; sarcini date de către bunic.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie trei numere naturale &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; separate printr-un spaţiu, având semnificația din enunț. Pe fiecare dintre următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii se află câte &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; numere naturale despărțite prin câte un spațiu, reprezentând valorile matricei. Pe următoarele &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; linii se află câte un număr natural &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, reprezentând dimensiunea unei roşii.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe primele &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; linii câte un număr natural, reprezentând aria maximă cerută&lt;br /&gt;
&lt;br /&gt;
pentru fiecare sarcină, în ordinea în care acestea apar în fișierul de intrare.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ N, M ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ Q ≤ 100 000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ A[i][j] ≤ N * M&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1 ≤ i ≤ N&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1 ≤ j ≤ M&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
3 4 3&lt;br /&gt;
&lt;br /&gt;
1 9 6 2&lt;br /&gt;
&lt;br /&gt;
1 10 10 4&lt;br /&gt;
&lt;br /&gt;
7 15 10 6&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Pentru rezolvarea primei sarcini Dan mută prima coloană în fața celei de a patra obținând matricea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;9 6 1 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;10 10 1 4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;15 10 7 6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alege apoi submatricea cu colțul stânga sus în &amp;lt;code&amp;gt;(1,3)&amp;lt;/code&amp;gt; și colțul dreapta jos în &amp;lt;code&amp;gt;(2,4)&amp;lt;/code&amp;gt;. Aria acesteia este &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pentru rezolvarea celei de a doua sarcini, Dan mută prima coloană în fața celei de a treia obținând matricea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;9 1 6 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;10 1 10 4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;15 7 10 6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Soluția este submatricea cu colțul stânga sus în &amp;lt;code&amp;gt;(1,2)&amp;lt;/code&amp;gt; și colțul dreapta jos în &amp;lt;code&amp;gt;(3,4)&amp;lt;/code&amp;gt;. Aria acesteia este &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pentru rezolvarea celei de a treia sarcini, Dan mută ultima coloană în fața primei coloane, obținând matricea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;2 1 9 6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;4 1 10 10&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;6 7 15 10&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Soluția este submatricea cu colțul stânga sus în &amp;lt;code&amp;gt;(1,1)&amp;lt;/code&amp;gt; și colțul dreapta jos în &amp;lt;code&amp;gt;(3,2)&amp;lt;/code&amp;gt;. Aria acesteia este &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999 4 3&lt;br /&gt;
&lt;br /&gt;
1 9 6 2&lt;br /&gt;
&lt;br /&gt;
1 10 10 4&lt;br /&gt;
&lt;br /&gt;
7 15 10 6&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
ValueError: Error: 1 &amp;lt;= n &amp;lt;= 1000&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verify_constraints(n, m, q):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000):&lt;br /&gt;
        raise ValueError(&amp;quot;Error: 1 &amp;lt;= n &amp;lt;= 1000&amp;quot;)&lt;br /&gt;
    if not (1 &amp;lt;= m &amp;lt;= 1000):&lt;br /&gt;
        raise ValueError(&amp;quot;Error: 1 &amp;lt;= m &amp;lt;= 1000&amp;quot;)&lt;br /&gt;
    if not (1 &amp;lt;= q &amp;lt;= 100000):&lt;br /&gt;
        raise ValueError(&amp;quot;Error: 1 &amp;lt;= q &amp;lt;= 100000&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    def read_int():&lt;br /&gt;
        return int(fin.readline().strip())&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        n, m, q = map(int, fin.readline().split())&lt;br /&gt;
        verify_constraints(n, m, q)&lt;br /&gt;
&lt;br /&gt;
        positions = [[] for _ in range(n * m + 5)]&lt;br /&gt;
        minn = [0] * m&lt;br /&gt;
        height = [0] * (m + 1)&lt;br /&gt;
        sum_ = [0] * (n + 1)&lt;br /&gt;
        ans = [0] * (n * m + 5)&lt;br /&gt;
        sol = 0&lt;br /&gt;
&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            row = list(map(int, fin.readline().split()))&lt;br /&gt;
            for j in range(m):&lt;br /&gt;
                x = row[j]&lt;br /&gt;
                if not (minn[j] &amp;lt;= x):&lt;br /&gt;
                    raise ValueError(&amp;quot;Error: minn[j] &amp;lt;= x&amp;quot;)&lt;br /&gt;
                minn[j] = x&lt;br /&gt;
                positions[x].append(j)&lt;br /&gt;
&lt;br /&gt;
        for val in range(1, n * m + 1):&lt;br /&gt;
            for j in positions[val]:&lt;br /&gt;
                height[j] += 1&lt;br /&gt;
                sum_[height[j]] += 1&lt;br /&gt;
                sol = max(sol, sum_[height[j]] * height[j])&lt;br /&gt;
            ans[val] = sol&lt;br /&gt;
&lt;br /&gt;
        for i in range(1, n * m + 1):&lt;br /&gt;
            ans[i] = max(ans[i - 1], ans[i])&lt;br /&gt;
&lt;br /&gt;
        for _ in range(q):&lt;br /&gt;
            x = read_int()&lt;br /&gt;
            fout.write(str(ans[x]) + &amp;quot;\n&amp;quot;)&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>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3747_-_Bile_4&amp;diff=8949</id>
		<title>3747 - Bile 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3747_-_Bile_4&amp;diff=8949"/>
		<updated>2024-01-04T01:42:37Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Enunț = Presupunem că avem două cutii notate &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;. Cutia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; conține &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; bile numerotate cu numerele naturale distincte: &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, . . . , &amp;lt;code&amp;gt;N − 1&amp;lt;/code&amp;gt;. Cutia &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; este goală.  Spunem că o bilă dintr-o cutie este &amp;lt;code&amp;gt;bila specială&amp;lt;/code&amp;gt; a acestei cutii dacă numărul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; cu care este numerotată această bilă este egal cu media aritmetică a nume...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Enunț =&lt;br /&gt;
Presupunem că avem două cutii notate &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;. Cutia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; conține &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; bile numerotate cu numerele naturale distincte: &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, . . . , &amp;lt;code&amp;gt;N − 1&amp;lt;/code&amp;gt;. Cutia &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; este goală.&lt;br /&gt;
&lt;br /&gt;
Spunem că o bilă dintr-o cutie este &amp;lt;code&amp;gt;bila specială&amp;lt;/code&amp;gt; a acestei cutii dacă numărul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; cu care este numerotată această bilă este egal cu media aritmetică a numerelor celorlalte bile din cutie.&lt;br /&gt;
&lt;br /&gt;
La un moment dat, cineva mută bila cu numărul &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; din cutia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; în cutia &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Vi se cere să alegeți alte &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; bile, din cutia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, pe care să le mutați în cutia &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; astfel încât cutia &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; să conțină &amp;lt;code&amp;gt;K + 1&amp;lt;/code&amp;gt; bile, iar bila cu numărul &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; să fie bila specială a cutiei &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieți un program care citește numerele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, apoi determină:&lt;br /&gt;
&lt;br /&gt;
# dacă, înainte să fie mutate bile din cutia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; în cutia &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;, există o bilă specială în cutia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;; în caz afirmativ, programul determină numărul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; cu care este numerotată această bilă specială;&lt;br /&gt;
# cel mai mic (în sens lexicografic) șir strict crescător al numerelor celor &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; bile care pot fi mutate din cutia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; în cutia &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; astfel încât bila cu numărul &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; să fie bila specială a cutiei &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;;&lt;br /&gt;
# cel mai mare (în sens lexicografic) șir strict crescător al numerelor celor &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; bile care pot fi mutate din cutia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; în cutia &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; astfel încât bila cu numărul &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; să fie bila specială a cutiei &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie trei numere naturale &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, separate prin câte un spațiu. &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; reprezintă cerința care trebuie rezolvată (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;), iar &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; au semnificația din enunț.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține:&lt;br /&gt;
&lt;br /&gt;
* dacă &amp;lt;code&amp;gt;C = 1&amp;lt;/code&amp;gt;, pe prima linie, numărul natural X reprezentând numârul bilei speciale din cutia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; sau valoarea &amp;lt;code&amp;gt;−1&amp;lt;/code&amp;gt; dacă cutia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; nu conține o astfel de bilă (reprezentând răspunsul la cerința &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;);&lt;br /&gt;
* dacă &amp;lt;code&amp;gt;C = 2&amp;lt;/code&amp;gt;, pe prima linie, un șir strict crescător de &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; numere naturale, separate prin câte un spațiu (reprezentând răspunsul la cerința &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;);&lt;br /&gt;
* dacă &amp;lt;code&amp;gt;C = 3&amp;lt;/code&amp;gt;, pe prima linie, un șir strict crescător de &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; numere naturale, separate prin câte un spațiu (reprezentând răspunsul la cerința &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât &amp;lt;code&amp;gt;1.000.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; număr natural, &amp;lt;code&amp;gt;4 ≤ N ≤ 100000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; număr natural, &amp;lt;code&amp;gt;2 ≤ K ≤ N/2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
1 9 3&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Se rezolvă cerința &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;N = 9&amp;lt;/code&amp;gt;. Avem &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; bile inscript, ionate cu &amp;lt;code&amp;gt;0, 1, 2, 3, 4, 5, 6, 7, 8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Bila specială este &amp;lt;code&amp;gt;X = 4&amp;lt;/code&amp;gt; deoarece: &amp;lt;code&amp;gt;X = (0 + 1 + 2 + 3 + 5 + 6 + 7 + 8)/8 = 32/8 = 4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
1 3 3&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
-1&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Se rezolvă cerința &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;N = 8&amp;lt;/code&amp;gt;. Se va scrie în fișierul de ieșire valoarea &amp;lt;code&amp;gt;−1&amp;lt;/code&amp;gt; deoarece cutia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; nu conține nicio bilă specială.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999 8 3&lt;br /&gt;
&lt;br /&gt;
Ouput:&lt;br /&gt;
&lt;br /&gt;
ValueError: Invalid value for C&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# Function to validate input constraints&lt;br /&gt;
def validate_input_constraints(C, N, K):&lt;br /&gt;
    if not (1 &amp;lt;= C &amp;lt;= 3):&lt;br /&gt;
        raise ValueError(&amp;quot;Invalid value for C&amp;quot;)&lt;br /&gt;
    if not (4 &amp;lt;= N &amp;lt;= 100000):&lt;br /&gt;
        raise ValueError(&amp;quot;Invalid value for N&amp;quot;)&lt;br /&gt;
    if not (2 &amp;lt;= K &amp;lt;= N // 2):&lt;br /&gt;
        raise ValueError(&amp;quot;Invalid value for K&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Open input and output files&lt;br /&gt;
fin = open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
fout = open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Read input values&lt;br /&gt;
C, N, K = map(int, fin.readline().split())&lt;br /&gt;
&lt;br /&gt;
# Validate input constraints&lt;br /&gt;
validate_input_constraints(C, N, K)&lt;br /&gt;
&lt;br /&gt;
# Function to write the result to the output file&lt;br /&gt;
def write_result(s):&lt;br /&gt;
    fout.write(&amp;quot; &amp;quot;.join(map(str, s)) + &#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
# Function for case 1&lt;br /&gt;
def c1():&lt;br /&gt;
    if N % 2 == 1:&lt;br /&gt;
        fout.write(str((N - 1) // 2) + &#039;\n&#039;)&lt;br /&gt;
    else:&lt;br /&gt;
        fout.write(&amp;quot;-1\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Function for case 2&lt;br /&gt;
def c2():&lt;br /&gt;
    K_square = K * K&lt;br /&gt;
    S = 0&lt;br /&gt;
    s = [0] * K&lt;br /&gt;
&lt;br /&gt;
    for i in range(K - 1):&lt;br /&gt;
        s[i] = i&lt;br /&gt;
        S += s[i]&lt;br /&gt;
&lt;br /&gt;
    if K_square - S &amp;lt;= N - 1:&lt;br /&gt;
        s[K - 1] = K_square - S&lt;br /&gt;
        write_result(s)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    s[K - 1] = K - 1&lt;br /&gt;
    S += s[K - 1]&lt;br /&gt;
&lt;br /&gt;
    dif = K_square - S&lt;br /&gt;
    g = dif // (N - K)&lt;br /&gt;
    rest = dif % (N - K)&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, g + 1):&lt;br /&gt;
        s[K - i] += (N - K)&lt;br /&gt;
&lt;br /&gt;
    if s[K - (g + 1)] + rest != K:&lt;br /&gt;
        s[K - (g + 1)] += rest&lt;br /&gt;
    else:&lt;br /&gt;
        s[K - (g + 1)] += (rest + 1)&lt;br /&gt;
        s[K - g] -= 1&lt;br /&gt;
&lt;br /&gt;
    write_result(s)&lt;br /&gt;
&lt;br /&gt;
# Function for case 3&lt;br /&gt;
def c3():&lt;br /&gt;
    s = [0] * K&lt;br /&gt;
&lt;br /&gt;
    if K % 2 == 0:&lt;br /&gt;
        # K is even&lt;br /&gt;
        m = K // 2&lt;br /&gt;
        for i in range(K):&lt;br /&gt;
            s[i] = m&lt;br /&gt;
            m += 1&lt;br /&gt;
            if m == K:&lt;br /&gt;
                m += 1&lt;br /&gt;
        write_result(s)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    # K is odd&lt;br /&gt;
    M = K // 2&lt;br /&gt;
    s[0] = M&lt;br /&gt;
    s[K - 1] = 2 * K + 1 - s[0]&lt;br /&gt;
    s[M] = K - 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, M):&lt;br /&gt;
        s[i] = M + i&lt;br /&gt;
        s[K - 1 - i] = 2 * K - s[i]&lt;br /&gt;
&lt;br /&gt;
    write_result(s)&lt;br /&gt;
&lt;br /&gt;
# Main program&lt;br /&gt;
if C == 1:&lt;br /&gt;
    c1()&lt;br /&gt;
elif C == 2:&lt;br /&gt;
    c2()&lt;br /&gt;
elif C == 3:&lt;br /&gt;
    c3()&lt;br /&gt;
&lt;br /&gt;
# Close input and output files&lt;br /&gt;
fin.close()&lt;br /&gt;
fout.close()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4184_-_Bac_Nume&amp;diff=8948</id>
		<title>4184 - Bac Nume</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4184_-_Bac_Nume&amp;diff=8948"/>
		<updated>2024-01-04T01:18:14Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Scrieți subprogramul &amp;lt;code&amp;gt;FNume&amp;lt;/code&amp;gt; cu următorul antet:  def FNume(s)  = Restricții și precizări =  * Numele funcției va fi &amp;lt;code&amp;gt;FNume&amp;lt;/code&amp;gt;  = Exemplu: = După apelul &amp;lt;code&amp;gt;FNume(&amp;quot;David Popovici&amp;quot;)&amp;lt;/code&amp;gt;, se va afișa &amp;lt;code&amp;gt;Popovici2022&amp;lt;/code&amp;gt;.  == Rezolvare == &amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt; def FNume(s):     # Verificare dacă șirul de intrare nu este gol     if not s:         return &amp;quot;&amp;quot;      # Descompunem numele și prenumele     nume, p...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Scrieți subprogramul &amp;lt;code&amp;gt;FNume&amp;lt;/code&amp;gt; cu următorul antet:&lt;br /&gt;
 def FNume(s)&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* Numele funcției va fi &amp;lt;code&amp;gt;FNume&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
După apelul &amp;lt;code&amp;gt;FNume(&amp;quot;David Popovici&amp;quot;)&amp;lt;/code&amp;gt;, se va afișa &amp;lt;code&amp;gt;Popovici2022&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def FNume(s):&lt;br /&gt;
    # Verificare dacă șirul de intrare nu este gol&lt;br /&gt;
    if not s:&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Descompunem numele și prenumele&lt;br /&gt;
    nume, prenume = s.split()&lt;br /&gt;
&lt;br /&gt;
    # Concatenăm numele de familie și adăugăm &amp;quot;2022&amp;quot;&lt;br /&gt;
    return f&amp;quot;{nume}2022&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Exemplu de utilizare:&lt;br /&gt;
nume_complet = &amp;quot;David Popovici&amp;quot;&lt;br /&gt;
rezultat = FNume(nume_complet)&lt;br /&gt;
print(f&amp;quot;Numele complet: {rezultat}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4061_-_Lant_Q&amp;diff=8947</id>
		<title>4061 - Lant Q</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4061_-_Lant_Q&amp;diff=8947"/>
		<updated>2024-01-04T00:26:41Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerinţa = Se dă un graf neorientat cu n vârfuri și un număr natural &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt;. Să se determine toate lanțurile elementare formate din cel puțin o muchie, cu extremitatea finală în vârful &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt;.  = Date de intrare = Fişierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, reprezentând numărul de vârfuri ale grafului și numărul de muchii date în continuare. Fiecare dintre următoarele &amp;lt;code&amp;gt;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerinţa =&lt;br /&gt;
Se dă un graf neorientat cu n vârfuri și un număr natural &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt;. Să se determine toate lanțurile elementare formate din cel puțin o muchie, cu extremitatea finală în vârful &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, reprezentând numărul de vârfuri ale grafului și numărul de muchii date în continuare. Fiecare dintre următoarele &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; linii conține câte o pereche de numere &amp;lt;code&amp;gt;i j&amp;lt;/code&amp;gt;, cu semnificația că există muchie între &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pe ultima linie se află numărul &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieşire =&lt;br /&gt;
Fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține, în ordine lexicografică, toate lanțurile elementare cu extremitatea finală în vârful &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt;, fiecare lanț fiind afișat pe câte o linie a fișierului, vârfurile dintr-un lanț fiind separate prin exact un spațiu. Dacă graful nu conține niciun lanț elementar format din cel puțin o muchie, cu extremitatea finală în vârful &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt;, atunci se va afișa &amp;lt;code&amp;gt;NU EXISTA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricţii şi precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 20&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ q ≤ n&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ i, j ≤ n&amp;lt;/code&amp;gt;&lt;br /&gt;
* muchiile se pot repeta în fișierul de intrare&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
5 8&lt;br /&gt;
&lt;br /&gt;
1 4 &lt;br /&gt;
&lt;br /&gt;
1 3 &lt;br /&gt;
&lt;br /&gt;
3 5 &lt;br /&gt;
&lt;br /&gt;
4 5 &lt;br /&gt;
&lt;br /&gt;
2 4 &lt;br /&gt;
&lt;br /&gt;
1 2 &lt;br /&gt;
&lt;br /&gt;
4 2 &lt;br /&gt;
&lt;br /&gt;
3 4&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
1 2 4 3 5&lt;br /&gt;
&lt;br /&gt;
1 2 4 5&lt;br /&gt;
&lt;br /&gt;
1 3 4 5&lt;br /&gt;
&lt;br /&gt;
1 3 5&lt;br /&gt;
&lt;br /&gt;
1 4 3 5&lt;br /&gt;
&lt;br /&gt;
1 4 5&lt;br /&gt;
&lt;br /&gt;
2 1 3 4 5&lt;br /&gt;
&lt;br /&gt;
2 1 3 5&lt;br /&gt;
&lt;br /&gt;
2 1 4 3 5&lt;br /&gt;
&lt;br /&gt;
2 1 4 5&lt;br /&gt;
&lt;br /&gt;
2 4 1 3 5&lt;br /&gt;
&lt;br /&gt;
2 4 3 5&lt;br /&gt;
&lt;br /&gt;
2 4 5&lt;br /&gt;
&lt;br /&gt;
3 1 2 4 5&lt;br /&gt;
&lt;br /&gt;
3 1 4 5&lt;br /&gt;
&lt;br /&gt;
3 4 5&lt;br /&gt;
&lt;br /&gt;
3 5&lt;br /&gt;
&lt;br /&gt;
4 1 3 5&lt;br /&gt;
&lt;br /&gt;
4 2 1 3 5&lt;br /&gt;
&lt;br /&gt;
4 3 5&lt;br /&gt;
&lt;br /&gt;
4 5&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
99999 8&lt;br /&gt;
&lt;br /&gt;
1 4 &lt;br /&gt;
&lt;br /&gt;
1 3 &lt;br /&gt;
&lt;br /&gt;
3 5 &lt;br /&gt;
&lt;br /&gt;
4 5 &lt;br /&gt;
&lt;br /&gt;
2 4 &lt;br /&gt;
&lt;br /&gt;
1 2 &lt;br /&gt;
&lt;br /&gt;
4 2 &lt;br /&gt;
&lt;br /&gt;
3 4&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
Ouput:&lt;br /&gt;
&lt;br /&gt;
Constraint violation: 1 ≤ n ≤ 20&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verify_constraints(n):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 20):&lt;br /&gt;
        print(&amp;quot;Constraint violation: 1 ≤ n ≤ 20 and 1 ≤ q ≤ n&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def is_edge_chain(chain):&lt;br /&gt;
    for i in range(len(chain) - 1):&lt;br /&gt;
        if not graph[chain[i]][chain[i + 1]]:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def find_elementary_chains(v, end_vertex, path):&lt;br /&gt;
    path.append(v)&lt;br /&gt;
    if v == end_vertex and len(path) &amp;gt; 1:&lt;br /&gt;
        chains.append(path.copy())&lt;br /&gt;
    else:&lt;br /&gt;
        for neighbor in range(1, n + 1):&lt;br /&gt;
            if graph[v][neighbor] and neighbor not in path:&lt;br /&gt;
                find_elementary_chains(neighbor, end_vertex, path)&lt;br /&gt;
    path.pop()&lt;br /&gt;
&lt;br /&gt;
def write_chains_to_file(chains, output_file):&lt;br /&gt;
    if not chains:&lt;br /&gt;
        output_file.write(&amp;quot;NU EXISTA\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        chains.sort()&lt;br /&gt;
        for chain in chains:&lt;br /&gt;
            output_file.write(&amp;quot; &amp;quot;.join(map(str, chain)) + &#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        n, m = map(int, fin.readline().split())&lt;br /&gt;
        &lt;br /&gt;
        verify_constraints(n)&lt;br /&gt;
        &lt;br /&gt;
        graph = [[False] * (n + 1) for _ in range(n + 1)]&lt;br /&gt;
&lt;br /&gt;
        for _ in range(m):&lt;br /&gt;
            a, b = map(int, fin.readline().split())&lt;br /&gt;
            graph[a][b] = graph[b][a] = True&lt;br /&gt;
&lt;br /&gt;
        end_vertex = int(fin.readline().strip())&lt;br /&gt;
&lt;br /&gt;
        chains = []&lt;br /&gt;
        for start_vertex in range(1, n + 1):&lt;br /&gt;
            if start_vertex != end_vertex:&lt;br /&gt;
                find_elementary_chains(start_vertex, end_vertex, [])&lt;br /&gt;
&lt;br /&gt;
        write_chains_to_file(chains, fout)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1318_-_Bipartit_1_Mare&amp;diff=8938</id>
		<title>1318 - Bipartit 1 Mare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1318_-_Bipartit_1_Mare&amp;diff=8938"/>
		<updated>2024-01-03T22:40:07Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se dă lista muchiilor unui graf neorientat cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; vârfuri, etichetate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. Să se verifice dacă graful este bipartit.  = Date de intrare = Fişierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, reprezentând numărul de vârfuri ale grafului și numărul de muchii. Fiecare dintre următoarele &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; linii conține câte o pereche de numere &amp;lt;code&amp;gt;i j&amp;lt;/...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă lista muchiilor unui graf neorientat cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; vârfuri, etichetate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. Să se verifice dacă graful este bipartit.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, reprezentând numărul de vârfuri ale grafului și numărul de muchii. Fiecare dintre următoarele &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; linii conține câte o pereche de numere &amp;lt;code&amp;gt;i j&amp;lt;/code&amp;gt;, cu semnificația că există muchie între &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine pe prima linie mesajul &amp;lt;code&amp;gt;DA&amp;lt;/code&amp;gt;, dacă graful este bipartit, respectiv &amp;lt;code&amp;gt;NU&amp;lt;/code&amp;gt; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
Dacă mesajul este &amp;lt;code&amp;gt;DA&amp;lt;/code&amp;gt; , următoarele două linii vor conţine două mulţimi care formează partiţia vârfurilor. Elementele fiecărei mulţimi vor fi afişate în ordine crescătoare, separate prin exact un spaţiu. Prima mulţime va fi cea care conţine vârful &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 &amp;lt; n ≤ 100 - atentie&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ i , j ≤ n&amp;lt;/code&amp;gt;&lt;br /&gt;
* se recomanda utilizarea metodei backtracking&lt;br /&gt;
* muchiile se pot repeta&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
7 6&lt;br /&gt;
&lt;br /&gt;
1 4&lt;br /&gt;
&lt;br /&gt;
1 6&lt;br /&gt;
&lt;br /&gt;
6 5&lt;br /&gt;
&lt;br /&gt;
3 2&lt;br /&gt;
&lt;br /&gt;
3 5&lt;br /&gt;
&lt;br /&gt;
3 7&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
DA&lt;br /&gt;
&lt;br /&gt;
1 2 5 7&lt;br /&gt;
&lt;br /&gt;
3 4 6&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt&lt;br /&gt;
&lt;br /&gt;
99999999 6&lt;br /&gt;
&lt;br /&gt;
1 4&lt;br /&gt;
&lt;br /&gt;
1 6&lt;br /&gt;
&lt;br /&gt;
6 5&lt;br /&gt;
&lt;br /&gt;
3 2&lt;br /&gt;
&lt;br /&gt;
3 5&lt;br /&gt;
&lt;br /&gt;
3 7&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constraint violation: 1 &amp;lt; n ≤ 100&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
from collections import deque&lt;br /&gt;
&lt;br /&gt;
def verify_constraints():&lt;br /&gt;
    if not (1 &amp;lt; n &amp;lt;= 100):&lt;br /&gt;
        print(&amp;quot;Constraint violation: 1 &amp;lt; n ≤ 100&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def bf_iterative():&lt;br /&gt;
    global prim, ultim, varf&lt;br /&gt;
    while prim &amp;lt;= ultim:&lt;br /&gt;
        varf = c[prim]&lt;br /&gt;
        for k in range(1, n + 1):&lt;br /&gt;
            if a[varf][k] == 1 and viz[k] == 0:&lt;br /&gt;
                ultim += 1&lt;br /&gt;
                c[ultim] = k&lt;br /&gt;
                viz[k] = 1&lt;br /&gt;
        prim += 1&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    a = [[0] * 101 for _ in range(101)]&lt;br /&gt;
    c = [0] * 101&lt;br /&gt;
    viz = [0] * 101&lt;br /&gt;
    s = [0] * 101&lt;br /&gt;
&lt;br /&gt;
    prim, ultim, varf = 0, 0, 0&lt;br /&gt;
    n, m = 0, 0&lt;br /&gt;
    ok = 1&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n, m = map(int, f.readline().split())&lt;br /&gt;
        verify_constraints()&lt;br /&gt;
        for _ in range(m):&lt;br /&gt;
            x, y = map(int, f.readline().split())&lt;br /&gt;
            a[x][y] = a[y][x] = 1&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
        verify_constraints()&lt;br /&gt;
        &lt;br /&gt;
        for nd in range(1, n + 1):&lt;br /&gt;
            if viz[nd] == 0:&lt;br /&gt;
                for k in range(1, n + 1):&lt;br /&gt;
                    c[k] = 0&lt;br /&gt;
                    viz[k] = 0&lt;br /&gt;
&lt;br /&gt;
                prim, ultim = 1, 1&lt;br /&gt;
                viz[nd] = 1&lt;br /&gt;
                c[prim] = nd&lt;br /&gt;
                bf_iterative()&lt;br /&gt;
&lt;br /&gt;
                for k in range(1, ultim):&lt;br /&gt;
                    for j in range(k + 1, ultim + 1):&lt;br /&gt;
                        if a[c[k]][c[j]] == 1:&lt;br /&gt;
                            if s[c[k]] == 0 and s[c[j]] == 0:&lt;br /&gt;
                                s[c[k]] = 1&lt;br /&gt;
                                s[c[j]] = -1&lt;br /&gt;
                            elif s[c[k]] != 0 and s[c[j]] == 0:&lt;br /&gt;
                                s[c[j]] = -1 * s[c[k]]&lt;br /&gt;
                            elif s[c[k]] == s[c[j]] and s[c[k]] != 0 and s[c[j]] != 0:&lt;br /&gt;
                                ok = 0&lt;br /&gt;
&lt;br /&gt;
        if ok == 0:&lt;br /&gt;
            g.write(&amp;quot;NU&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            g.write(&amp;quot;DA\n&amp;quot;)&lt;br /&gt;
            for i in range(1, n + 1):&lt;br /&gt;
                if s[i] == 1:&lt;br /&gt;
                    g.write(str(i) + &#039; &#039;)&lt;br /&gt;
            g.write(&#039;\n&#039;)&lt;br /&gt;
            for i in range(1, n + 1):&lt;br /&gt;
                if s[i] == -1:&lt;br /&gt;
                    g.write(str(i) + &#039; &#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3282_%E2%80%93_Transform1&amp;diff=8929</id>
		<title>3282 – Transform1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3282_%E2%80%93_Transform1&amp;diff=8929"/>
		<updated>2024-01-03T21:37:59Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Fie un șir &amp;lt;code&amp;gt;a = a1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a2&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;aN&amp;lt;/code&amp;gt; de numere naturale, nu neapărat distincte, cuprinse între &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;. Fie de asemenea două numere naturale &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. Se definește operația &amp;lt;code&amp;gt;transform(i)&amp;lt;/code&amp;gt; astfel: se determină valoarea &amp;lt;code&amp;gt;w = 1 + (x * i + y * ai) mod N&amp;lt;/code&amp;gt;, apoi toate elementele egale cu &amp;lt;code&amp;gt;ai&amp;lt;/code&amp;gt; din secvența &amp;lt;code&amp;gt;ai&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ai+1&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;aN&amp;lt;/cod...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fie un șir &amp;lt;code&amp;gt;a = a1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a2&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;aN&amp;lt;/code&amp;gt; de numere naturale, nu neapărat distincte, cuprinse între &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;. Fie de asemenea două numere naturale &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. Se definește operația &amp;lt;code&amp;gt;transform(i)&amp;lt;/code&amp;gt; astfel: se determină valoarea &amp;lt;code&amp;gt;w = 1 + (x * i + y * ai) mod N&amp;lt;/code&amp;gt;, apoi toate elementele egale cu &amp;lt;code&amp;gt;ai&amp;lt;/code&amp;gt; din secvența &amp;lt;code&amp;gt;ai&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ai+1&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;aN&amp;lt;/code&amp;gt; își modifică valoarea în &amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt;. De exemplu, pentru șirul &amp;lt;code&amp;gt;a=1, 7, 1, 7, 3, 4, 7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x = 4&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;y = 5&amp;lt;/code&amp;gt;, operația &amp;lt;code&amp;gt;transform(4)&amp;lt;/code&amp;gt; înseamnă că &amp;lt;code&amp;gt;w = 1+(4*4+5*7) mod 7 = 3&amp;lt;/code&amp;gt;, deci șirul devine &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; (toate elementele de la poziția &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; și egale cu &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; s-au modificat în &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;). După fiecare operație de tip transform se calculează suma elementelor șirului obținut.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Să se determine suma maximă care s-a obținut în șirul &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; efectuând pe rând asupra șirului operațiile &amp;lt;code&amp;gt;transform(1)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;transform(2)&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;transform(N)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numerele naturale &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. Pe linia a doua se găsesc, separate prin spațiu, elementele șirului &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie un singur număr natural reprezentând suma maximă obținută.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;3 ≤ N ≤ 256.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ x, y ≤ N&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
7 4 5&lt;br /&gt;
&lt;br /&gt;
1 7 1 7 3 4 7&lt;br /&gt;
&lt;br /&gt;
ouput.txt:&lt;br /&gt;
&lt;br /&gt;
35&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
După &amp;lt;code&amp;gt;transform(1)&amp;lt;/code&amp;gt;, în care w = 3, șirul devine &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; care are suma &amp;lt;code&amp;gt;34&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
După &amp;lt;code&amp;gt;transform(2)&amp;lt;/code&amp;gt;, în care &amp;lt;code&amp;gt;w = 2&amp;lt;/code&amp;gt;, șirul devine &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; care are suma &amp;lt;code&amp;gt;19&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
După &amp;lt;code&amp;gt;transform(3)&amp;lt;/code&amp;gt;, în care &amp;lt;code&amp;gt;w = 7&amp;lt;/code&amp;gt;, șirul devine &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; care are suma &amp;lt;code&amp;gt;27&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
După &amp;lt;code&amp;gt;transform(4)&amp;lt;/code&amp;gt;, în care &amp;lt;code&amp;gt;w = 6&amp;lt;/code&amp;gt;, șirul devine &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; care are suma &amp;lt;code&amp;gt;35&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
După &amp;lt;code&amp;gt;transform(5)&amp;lt;/code&amp;gt;, în care &amp;lt;code&amp;gt;w = 7&amp;lt;/code&amp;gt;, șirul devine &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; care are suma &amp;lt;code&amp;gt;35&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
După &amp;lt;code&amp;gt;transform(6)&amp;lt;/code&amp;gt;, în care &amp;lt;code&amp;gt;w = 3&amp;lt;/code&amp;gt;, șirul devine &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; care are suma &amp;lt;code&amp;gt;34&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
După &amp;lt;code&amp;gt;transform(7)&amp;lt;/code&amp;gt;, în care &amp;lt;code&amp;gt;w = 3&amp;lt;/code&amp;gt;, șirul devine &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; care are suma &amp;lt;code&amp;gt;31&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Suma maximă care s-a obținut este &amp;lt;code&amp;gt;35&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
999999999 4 5&lt;br /&gt;
&lt;br /&gt;
1 7 1 7 3 4 7&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Invalid input. Please make sure 3 ≤ N ≤ 256000 and 1 ≤ x, y ≤ N.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
N = 260001&lt;br /&gt;
&lt;br /&gt;
def validate_input(n, x, y):&lt;br /&gt;
    if 3 &amp;lt;= n &amp;lt;= 256000 and 1 &amp;lt;= x &amp;lt;= n and 1 &amp;lt;= y &amp;lt;= n:&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as input_file, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as output_file:&lt;br /&gt;
        n, x, y = map(int, input_file.readline().split())&lt;br /&gt;
        a = list(map(int, input_file.readline().split()))&lt;br /&gt;
&lt;br /&gt;
        if not validate_input(n, x, y):&lt;br /&gt;
            print(&amp;quot;Invalid input. Please make sure 3 ≤ N ≤ 256000 and 1 ≤ x, y ≤ N.&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        S = 0&lt;br /&gt;
        Rad = [0] * N&lt;br /&gt;
        Val = [0] * N&lt;br /&gt;
        tata = [0] * N&lt;br /&gt;
        Card = [0] * N&lt;br /&gt;
&lt;br /&gt;
        for i in range(1, n + 1):&lt;br /&gt;
            S += a[i - 1]&lt;br /&gt;
&lt;br /&gt;
        for i in range(n, 0, -1):&lt;br /&gt;
            if not Rad[a[i - 1]]:&lt;br /&gt;
                Rad[a[i - 1]] = i&lt;br /&gt;
                Val[i] = a[i - 1]&lt;br /&gt;
            tata[i] = Rad[a[i - 1]]&lt;br /&gt;
            Card[a[i - 1]] += 1&lt;br /&gt;
&lt;br /&gt;
        Sol = 0&lt;br /&gt;
        for i in range(1, n + 1):&lt;br /&gt;
            nod = i&lt;br /&gt;
            while nod != tata[nod]:&lt;br /&gt;
                nod = tata[nod]&lt;br /&gt;
            val1 = Val[nod]&lt;br /&gt;
            val2 = 1 + (i * x + val1 * y) % n&lt;br /&gt;
            rad2 = Rad[val2]&lt;br /&gt;
&lt;br /&gt;
            if val1 == val2:&lt;br /&gt;
                Card[val1] -= 1&lt;br /&gt;
                if Card[val1] == 0:&lt;br /&gt;
                    Val[nod] = 0&lt;br /&gt;
                    Rad[val1] = 0&lt;br /&gt;
            else:&lt;br /&gt;
                S = S + Card[val1] * (val2 - val1)&lt;br /&gt;
                Card[val2] = Card[val2] + Card[val1] - 1&lt;br /&gt;
                Card[val1] = 0&lt;br /&gt;
&lt;br /&gt;
                if nod &amp;lt; rad2:&lt;br /&gt;
                    tata[nod] = rad2&lt;br /&gt;
                    Rad[val2] = rad2&lt;br /&gt;
                    Val[rad2] = val2&lt;br /&gt;
                    Rad[val1] = 0&lt;br /&gt;
                    Val[nod] = 0&lt;br /&gt;
                else:&lt;br /&gt;
                    tata[rad2] = nod&lt;br /&gt;
                    Rad[val2] = nod&lt;br /&gt;
                    Val[nod] = val2&lt;br /&gt;
                    Rad[val1] = 0&lt;br /&gt;
                    Val[rad2] = 0&lt;br /&gt;
&lt;br /&gt;
            tata[i] = 0&lt;br /&gt;
            Sol = max(Sol, S)&lt;br /&gt;
&lt;br /&gt;
        output_file.write(str(Sol))&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>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3133_%E2%80%93_Arbori_nr&amp;diff=8927</id>
		<title>3133 – Arbori nr</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3133_%E2%80%93_Arbori_nr&amp;diff=8927"/>
		<updated>2024-01-03T21:22:26Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se dă un arbore cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri şi rădăcina &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;, nodurile fiind etichetate cu numerele de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. Se cere să se afle pentru fiecare nod &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;, câte noduri din subarborele cu rădăcina &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; au eticheta mai mică decât &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;.  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;arbori_nrIN.txt&amp;lt;/code&amp;gt; conține pe prima linie numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;, iar pe următoarele...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă un arbore cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri şi rădăcina &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;, nodurile fiind etichetate cu numerele de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. Se cere să se afle pentru fiecare nod &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;, câte noduri din subarborele cu rădăcina &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; au eticheta mai mică decât &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;arbori_nrIN.txt&amp;lt;/code&amp;gt; conține pe prima linie numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;, iar pe următoarele &amp;lt;code&amp;gt;n-1&amp;lt;/code&amp;gt; linii câte o pereche de numere &amp;lt;code&amp;gt;u&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;v&amp;lt;/code&amp;gt;, reprezentând faptul că între nodurile cu etichetele &amp;lt;code&amp;gt;u&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;v&amp;lt;/code&amp;gt; există o muchie.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;arbori_nrOUT.txt&amp;lt;/code&amp;gt; va conține pe prima linie &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, al &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;-lea număr reprezentând numărul de noduri din subarborele cu eticheta &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;, ce au etichetele mai mici decât &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;3 ≤ n ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ u,v ≤ n&amp;lt;/code&amp;gt;, distincte&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
arbori_nrIN.txt:&lt;br /&gt;
&lt;br /&gt;
5 2&lt;br /&gt;
&lt;br /&gt;
2 3&lt;br /&gt;
&lt;br /&gt;
5 4&lt;br /&gt;
&lt;br /&gt;
5 1&lt;br /&gt;
&lt;br /&gt;
2 5&lt;br /&gt;
&lt;br /&gt;
arbori_nrOUT.txt:&lt;br /&gt;
&lt;br /&gt;
0 1 0 0 2&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
În arbore &amp;lt;code&amp;gt;1,3,4&amp;lt;/code&amp;gt; sunt frunze, deci au câte &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; noduri în subarborii cu rădăcinile &amp;lt;code&amp;gt;1, 3&amp;lt;/code&amp;gt; respectiv &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; are în subarbore nodul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; cu eticheta mai mică decât &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; are în subarbore două noduri cu etichetele mai mici decât &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, nodurile &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
arbori_nrIN.txt:&lt;br /&gt;
&lt;br /&gt;
999999999 2&lt;br /&gt;
&lt;br /&gt;
2 3&lt;br /&gt;
&lt;br /&gt;
5 4&lt;br /&gt;
&lt;br /&gt;
5 1&lt;br /&gt;
&lt;br /&gt;
2 5&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Error: n should be between 3 and 100000 (inclusive).&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validate_conditions(n):&lt;br /&gt;
    if not (3 &amp;lt;= n &amp;lt;= 100000):&lt;br /&gt;
        print(&amp;quot;Error: n should be between 3 and 100000 (inclusive).&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    &lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def update(aib, pos, val):&lt;br /&gt;
    while pos &amp;lt;= len(aib):&lt;br /&gt;
        aib[pos] += val&lt;br /&gt;
        pos += pos &amp;amp; -pos&lt;br /&gt;
&lt;br /&gt;
def query(aib, pos):&lt;br /&gt;
    sum_val = 0&lt;br /&gt;
    while pos &amp;gt; 0:&lt;br /&gt;
        sum_val += aib[pos]&lt;br /&gt;
        pos -= pos &amp;amp; -pos&lt;br /&gt;
    return sum_val&lt;br /&gt;
&lt;br /&gt;
def dfs1(node, dad, G, aib, aiblant, rez, lant):&lt;br /&gt;
    update(aib, node, 1)&lt;br /&gt;
    update(aiblant, node, 1)&lt;br /&gt;
    rez[node] += query(aib, node - 1)&lt;br /&gt;
    for next_node in G[node]:&lt;br /&gt;
        if next_node != dad:&lt;br /&gt;
            dfs1(next_node, node, G, aib, aiblant, rez, lant)&lt;br /&gt;
    update(aiblant, node, -1)&lt;br /&gt;
    lant[node] = query(aiblant, node)&lt;br /&gt;
&lt;br /&gt;
def dfs2(node, dad, G, aib, rez):&lt;br /&gt;
    update(aib, node, 1)&lt;br /&gt;
    rez[node] += query(aib, node - 1)&lt;br /&gt;
    for next_node in G[node][::-1]:&lt;br /&gt;
        if next_node != dad:&lt;br /&gt;
            dfs2(next_node, node, G, aib, rez)&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;arbori_nrIN.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n, r = map(int, f.readline().split())&lt;br /&gt;
        if not validate_conditions(n):&lt;br /&gt;
            return&lt;br /&gt;
        u, v = 0, 0  # Initialize u and v&lt;br /&gt;
        G = [[] for _ in range(n + 1)]&lt;br /&gt;
        rez = [0] * (n + 1)&lt;br /&gt;
        lant = [0] * (n + 1)&lt;br /&gt;
        aib = [0] * (4 * n + 1)&lt;br /&gt;
        aiblant = [0] * (4 * n + 1)&lt;br /&gt;
        for _ in range(n - 1):&lt;br /&gt;
            x, y = map(int, f.readline().split())&lt;br /&gt;
            G[x].append(y)&lt;br /&gt;
            G[y].append(x)&lt;br /&gt;
            # Update u and v based on the first edge&lt;br /&gt;
            if u == 0:&lt;br /&gt;
                u, v = x, y&lt;br /&gt;
&lt;br /&gt;
    dfs1(r, 0, G, aib, aiblant, rez, lant)&lt;br /&gt;
&lt;br /&gt;
    for i in range(4 * n):&lt;br /&gt;
        aib[i] = 0&lt;br /&gt;
&lt;br /&gt;
    dfs2(r, 0, G, aib, rez)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;arbori_nrOUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
        for i in range(1, n + 1):&lt;br /&gt;
            g.write(f&amp;quot;{i - rez[i] + lant[i] - 1} &amp;quot;)&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>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3126_%E2%80%93_Arbori_in_graf&amp;diff=8924</id>
		<title>3126 – Arbori in graf</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3126_%E2%80%93_Arbori_in_graf&amp;diff=8924"/>
		<updated>2024-01-03T21:10:14Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = În judeţul lui Dorel sunt &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; localităţi legate între ele prin &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; drumuri. Dorel e interesat să afle în câte moduri se pot alege &amp;lt;code&amp;gt;n-1&amp;lt;/code&amp;gt; drumuri din cele &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; date, astfel încât folosind aceste drumuri să se poată ajunge de la orice localitate la oricare alta.  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;arbori_in_grafIN.txt&amp;lt;/code&amp;gt; conține pe prima linie numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, iar pe u...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
În judeţul lui Dorel sunt &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; localităţi legate între ele prin &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; drumuri. Dorel e interesat să afle în câte moduri se pot alege &amp;lt;code&amp;gt;n-1&amp;lt;/code&amp;gt; drumuri din cele &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; date, astfel încât folosind aceste drumuri să se poată ajunge de la orice localitate la oricare alta.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;arbori_in_grafIN.txt&amp;lt;/code&amp;gt; conține pe prima linie numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, iar pe următoarele &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; linii câte o pereche de numere distincte de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, reprezentând două localităţi între care există drum.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;arbori_in_grafOUT.txt&amp;lt;/code&amp;gt; va conține pe prima linie numărul de moduri cerut, modulo &amp;lt;code&amp;gt;1.000.000.007&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ n ≤ 50&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0 ≤ m ≤ n(n-1)/2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
arbori_in_grafIN.txt:&lt;br /&gt;
&lt;br /&gt;
2 1&lt;br /&gt;
&lt;br /&gt;
1 2&lt;br /&gt;
&lt;br /&gt;
arbori_in_grafOUT.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
arbori_in_grafIN.txt:&lt;br /&gt;
&lt;br /&gt;
99999999999 1&lt;br /&gt;
&lt;br /&gt;
1 2&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Invalid input! Please check the conditions: 2 ≤ n ≤ 50 and 0 ≤ m ≤ n(n-1)/2&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
MOD = 1000000007&lt;br /&gt;
&lt;br /&gt;
def gcd(x, y, a, b):&lt;br /&gt;
    if b == 0:&lt;br /&gt;
        x, y = 1, 0&lt;br /&gt;
    else:&lt;br /&gt;
        gcd(x, y, b, a % b)&lt;br /&gt;
        aux = x&lt;br /&gt;
        x = y&lt;br /&gt;
        y = aux - y * (a // b)&lt;br /&gt;
&lt;br /&gt;
def inverse(x):&lt;br /&gt;
    ins, inv = 0, 0&lt;br /&gt;
    gcd(inv, ins, x, MOD)&lt;br /&gt;
    if inv &amp;lt;= 0:&lt;br /&gt;
        inv = MOD + inv % MOD&lt;br /&gt;
    return inv&lt;br /&gt;
&lt;br /&gt;
def determinant(a, n):&lt;br /&gt;
    semn = 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        if a[i][i] == 0:&lt;br /&gt;
            for j in range(i + 1, n + 1):&lt;br /&gt;
                if a[j][i] != 0:&lt;br /&gt;
                    a[i], a[j] = a[j], a[i]&lt;br /&gt;
                    semn *= -1&lt;br /&gt;
                    break&lt;br /&gt;
&lt;br /&gt;
            if not a[i][i]:&lt;br /&gt;
                return 0&lt;br /&gt;
&lt;br /&gt;
        for j in range(i + 1, n + 1):&lt;br /&gt;
            if a[i][i] &amp;lt; 0:&lt;br /&gt;
                a[i][i] += MOD&lt;br /&gt;
            p = (-a[j][i] * inverse(a[i][i])) % MOD&lt;br /&gt;
            if p &amp;lt; 0:&lt;br /&gt;
                p += MOD&lt;br /&gt;
            for k in range(i, n + 1):&lt;br /&gt;
                a[j][k] = (a[j][k] + p * a[i][k]) % MOD&lt;br /&gt;
                if a[j][k] &amp;lt; 0:&lt;br /&gt;
                    a[j][k] += MOD&lt;br /&gt;
&lt;br /&gt;
    pp = 1&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        pp = (pp % MOD * a[i][i] % MOD) % MOD&lt;br /&gt;
    return pp * semn&lt;br /&gt;
&lt;br /&gt;
def validate_input(n, m):&lt;br /&gt;
    return 2 &amp;lt;= n &amp;lt;= 50 and 0 &amp;lt;= m &amp;lt;= n * (n - 1) // 2&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;arbori_in_grafIN.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n, m = map(int, f.readline().split())&lt;br /&gt;
&lt;br /&gt;
        if not validate_input(n, m):&lt;br /&gt;
            print(&amp;quot;Invalid input! Please check the conditions: 2 ≤ n ≤ 50 and 0 ≤ m ≤ n(n-1)/2&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        a = [[0] * 51 for _ in range(51)]&lt;br /&gt;
        for _ in range(m):&lt;br /&gt;
            x, y = map(int, f.readline().split())&lt;br /&gt;
            a[x][y] = -1&lt;br /&gt;
            a[y][x] = -1&lt;br /&gt;
            a[x][x] += 1&lt;br /&gt;
            a[y][y] += 1&lt;br /&gt;
&lt;br /&gt;
    det = determinant(a, n - 1)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;arbori_in_grafOUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
        g.write(str(det))&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>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3339_%E2%80%93_Disjoint1&amp;diff=8922</id>
		<title>3339 – Disjoint1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3339_%E2%80%93_Disjoint1&amp;diff=8922"/>
		<updated>2024-01-03T21:01:52Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Se consideră un graf cu &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; noduri numerotate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; operații de trei tipuri:  * &amp;lt;code&amp;gt;1 x y&amp;lt;/code&amp;gt; – se adaugă în graf muchia &amp;lt;code&amp;gt;(x, y)&amp;lt;/code&amp;gt;. Dacă muchia există deja, operația nu se efectuează * &amp;lt;code&amp;gt;2 x y&amp;lt;/code&amp;gt; – întrebare: nodurile &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; se află sau nu în aceeași componentă conexă? * &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; – întrebare: care este numărul maxim de noduri dintr-o com...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră un graf cu &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; noduri numerotate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; operații de trei tipuri:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 x y&amp;lt;/code&amp;gt; – se adaugă în graf muchia &amp;lt;code&amp;gt;(x, y)&amp;lt;/code&amp;gt;. Dacă muchia există deja, operația nu se efectuează&lt;br /&gt;
* &amp;lt;code&amp;gt;2 x y&amp;lt;/code&amp;gt; – întrebare: nodurile &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; se află sau nu în aceeași componentă conexă?&lt;br /&gt;
* &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; – întrebare: care este numărul maxim de noduri dintr-o componentă conexă?&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Trebuie să răspundeți la toate întrebările de tip &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, iar pe următoarele &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; linii se află operațiile date fie prin trei valori de forma &amp;lt;code&amp;gt;op x y&amp;lt;/code&amp;gt; (pentru operațiile de tip &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;), fie printr-o singură valoare &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; (pentru operațiile de tip &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran, pe câte o linie, răspunsul la fiecare întrebare de tip &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Dacă la o întrebare &amp;lt;code&amp;gt;2 x y&amp;lt;/code&amp;gt; răspunsul este afirmativ, adică &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; se află în aceeași componentă conexă, atunci veți afișa &amp;lt;code&amp;gt;DA&amp;lt;/code&amp;gt;, iar în caz contrar veți afișa &amp;lt;code&amp;gt;NU&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;3 ≤ N ≤ 32.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;3 ≤ M ≤ 300.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* va exista cel puțin o operație de fiecare tip.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
6 6&lt;br /&gt;
&lt;br /&gt;
1 1 4&lt;br /&gt;
&lt;br /&gt;
1 3 6&lt;br /&gt;
&lt;br /&gt;
2 4 6&lt;br /&gt;
&lt;br /&gt;
1 1 3&lt;br /&gt;
&lt;br /&gt;
2 4 6&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
NU&lt;br /&gt;
&lt;br /&gt;
DA&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
99999999 6&lt;br /&gt;
&lt;br /&gt;
1 1 4&lt;br /&gt;
&lt;br /&gt;
1 3 6&lt;br /&gt;
&lt;br /&gt;
2 4 6&lt;br /&gt;
&lt;br /&gt;
1 1 3&lt;br /&gt;
&lt;br /&gt;
2 4 6&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Invalid input. Please ensure that 3 ≤ N ≤ 32,000 and 3 ≤ M ≤ 300,000.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verify_conditions(N, M):&lt;br /&gt;
    return 3 &amp;lt;= N &amp;lt;= 32000 and 3 &amp;lt;= M &amp;lt;= 300000&lt;br /&gt;
&lt;br /&gt;
class UnionFind:&lt;br /&gt;
    def __init__(self, n):&lt;br /&gt;
        self.parent = list(range(n + 1))&lt;br /&gt;
        self.rank = [0] * (n + 1)&lt;br /&gt;
        self.size = [1] * (n + 1)&lt;br /&gt;
        self.max_size = 1&lt;br /&gt;
&lt;br /&gt;
    def find(self, x):&lt;br /&gt;
        if self.parent[x] != x:&lt;br /&gt;
            self.parent[x] = self.find(self.parent[x])&lt;br /&gt;
        return self.parent[x]&lt;br /&gt;
&lt;br /&gt;
    def union(self, x, y):&lt;br /&gt;
        root_x = self.find(x)&lt;br /&gt;
        root_y = self.find(y)&lt;br /&gt;
&lt;br /&gt;
        if root_x != root_y:&lt;br /&gt;
            if self.rank[root_x] &amp;lt; self.rank[root_y]:&lt;br /&gt;
                root_x, root_y = root_y, root_x&lt;br /&gt;
            self.parent[root_y] = root_x&lt;br /&gt;
            self.size[root_x] += self.size[root_y]&lt;br /&gt;
            self.max_size = max(self.max_size, self.size[root_x])&lt;br /&gt;
            if self.rank[root_x] == self.rank[root_y]:&lt;br /&gt;
                self.rank[root_x] += 1&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    N = int(input())&lt;br /&gt;
    M = int(input())&lt;br /&gt;
&lt;br /&gt;
    if not verify_conditions(N, M):&lt;br /&gt;
        print(&amp;quot;Invalid input. Please ensure that 3 ≤ N ≤ 32,000 and 3 ≤ M ≤ 300,000.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    union_find = UnionFind(N)&lt;br /&gt;
&lt;br /&gt;
    for _ in range(M):&lt;br /&gt;
        input_values = input().split()&lt;br /&gt;
        operation = int(input_values[0])&lt;br /&gt;
&lt;br /&gt;
        if operation == 1:&lt;br /&gt;
            x, y = int(input_values[1]), int(input_values[2])&lt;br /&gt;
            union_find.union(x, y)&lt;br /&gt;
        elif operation == 2:&lt;br /&gt;
            x, y = int(input_values[1]), int(input_values[2])&lt;br /&gt;
            result = &amp;quot;DA&amp;quot; if union_find.find(x) == union_find.find(y) else &amp;quot;NU&amp;quot;&lt;br /&gt;
            print(result)&lt;br /&gt;
        elif operation == 3:&lt;br /&gt;
            print(union_find.max_size)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3127_%E2%80%93_Arbori_xor&amp;diff=8913</id>
		<title>3127 – Arbori xor</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3127_%E2%80%93_Arbori_xor&amp;diff=8913"/>
		<updated>2024-01-03T20:29:56Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se dă un arbore cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri, în care fiecare muchie are asociat un număr natural. Se cere răspunsul la &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; întrebări de forma: dacă &amp;lt;code&amp;gt;u&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;v&amp;lt;/code&amp;gt; sunt două noduri din arbore, care este valoarea &amp;lt;code&amp;gt;xor&amp;lt;/code&amp;gt; a tuturor numerelor asociate muchiilor situate pe lanţul ce uneşte &amp;lt;code&amp;gt;u&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;v&amp;lt;/code&amp;gt;?  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;arbori_xorIN.txt&amp;lt;/code&amp;gt; conține pe prima linie nume...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă un arbore cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri, în care fiecare muchie are asociat un număr natural. Se cere răspunsul la &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; întrebări de forma: dacă &amp;lt;code&amp;gt;u&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;v&amp;lt;/code&amp;gt; sunt două noduri din arbore, care este valoarea &amp;lt;code&amp;gt;xor&amp;lt;/code&amp;gt; a tuturor numerelor asociate muchiilor situate pe lanţul ce uneşte &amp;lt;code&amp;gt;u&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;v&amp;lt;/code&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;arbori_xorIN.txt&amp;lt;/code&amp;gt; conține pe prima linie numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt;, pe următoarele &amp;lt;code&amp;gt;n-1&amp;lt;/code&amp;gt; linii câte o pereche de numere naturale ce reprezintă extremităţile unei muchii din arbore urmată de un număr natural ce reprezintă valoarea muchiei, iar pe următoarele &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; linii câte o pereche de numere naturale ce reprezintă nodurile pentru care se cere &amp;lt;code&amp;gt;xor&amp;lt;/code&amp;gt;-ul valorilor de pe lanţul ce le uneşte .&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;arbori_xorOUT.txt&amp;lt;/code&amp;gt; va conține pe primele &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; linii răspunsurile la cele &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; cerinţe.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ n ≤ 10.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ Q ≤ 500.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* valorile asociate muchiilor sunt numere naturale cel mult egale cu &amp;lt;code&amp;gt;10.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
arbori_xorIN.txt:&lt;br /&gt;
&lt;br /&gt;
5 2&lt;br /&gt;
&lt;br /&gt;
1 2 7&lt;br /&gt;
&lt;br /&gt;
1 3 4&lt;br /&gt;
&lt;br /&gt;
3 4 1&lt;br /&gt;
&lt;br /&gt;
4 5 13&lt;br /&gt;
&lt;br /&gt;
1 5&lt;br /&gt;
&lt;br /&gt;
3 2&lt;br /&gt;
&lt;br /&gt;
arbori_xorOUT.txt:&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
Explicație: Pentru prima cerinţă avem &amp;lt;code&amp;gt;4 ^ 1 ^ 13 = 8&amp;lt;/code&amp;gt;, iar pentru a doua &amp;lt;code&amp;gt;4 ^ 7 = 3&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
arbori_xorIN.txt:&lt;br /&gt;
&lt;br /&gt;
99999999 2&lt;br /&gt;
&lt;br /&gt;
1 2 7&lt;br /&gt;
&lt;br /&gt;
1 3 4&lt;br /&gt;
&lt;br /&gt;
3 4 1&lt;br /&gt;
&lt;br /&gt;
4 5 13&lt;br /&gt;
&lt;br /&gt;
1 5&lt;br /&gt;
&lt;br /&gt;
3 2&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input conditions not satisfied.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
from collections import deque&lt;br /&gt;
&lt;br /&gt;
def bfs(nod):&lt;br /&gt;
    global coada, s, t&lt;br /&gt;
    coada.append(nod)&lt;br /&gt;
    while coada:&lt;br /&gt;
        nod = coada.popleft()&lt;br /&gt;
        for i in range(len(L[nod])):&lt;br /&gt;
            vecin, cost = L[nod][i]&lt;br /&gt;
            if t[nod] == vecin:&lt;br /&gt;
                continue&lt;br /&gt;
            coada.append(vecin)&lt;br /&gt;
            t[vecin] = nod&lt;br /&gt;
            s[vecin] = s[nod] ^ cost&lt;br /&gt;
&lt;br /&gt;
def query(a, b):&lt;br /&gt;
    return s[a] ^ s[b]&lt;br /&gt;
&lt;br /&gt;
def verify_conditions(n, q):&lt;br /&gt;
    if 2 &amp;lt;= n &amp;lt;= 10000 and 1 &amp;lt;= q &amp;lt;= 500000:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
fin = open(&amp;quot;arbori_xorIN.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
fout = open(&amp;quot;arbori_xorOUT.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
coada = deque()&lt;br /&gt;
L = [[] for _ in range(10009)]&lt;br /&gt;
s = [0] * 10009&lt;br /&gt;
t = [0] * 10009&lt;br /&gt;
&lt;br /&gt;
n, q = map(int, fin.readline().split())&lt;br /&gt;
&lt;br /&gt;
if not verify_conditions(n, q):&lt;br /&gt;
    print(&amp;quot;Input conditions not satisfied.&amp;quot;)&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
    exit()&lt;br /&gt;
&lt;br /&gt;
for _ in range(n-1):&lt;br /&gt;
    x, y, z = map(int, fin.readline().split())&lt;br /&gt;
    L[x].append((y, z))&lt;br /&gt;
    L[y].append((x, z))&lt;br /&gt;
&lt;br /&gt;
bfs(1)&lt;br /&gt;
&lt;br /&gt;
for _ in range(q):&lt;br /&gt;
    a, b = map(int, fin.readline().split())&lt;br /&gt;
    fout.write(str(query(a, b)) + &#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
fin.close()&lt;br /&gt;
fout.close()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0653_%E2%80%93_Firm%C4%831&amp;diff=8874</id>
		<title>0653 – Firmă1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0653_%E2%80%93_Firm%C4%831&amp;diff=8874"/>
		<updated>2024-01-03T15:42:21Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Într-o firmă sunt &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; angajați, numerotați de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, organizați ierarhic, astfel că fiecare angajat are un șef direct, cu excepția directorului general, care nu are șef. Fiecare angajat al firmei are un salariu cunoscut, exprimat printr-un număr natural. În firmă funcționează un sistem de recompensare a angajaților astfel încât câștigul fiecărui salariat este egal cu salariul său la care se adaugă med...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Într-o firmă sunt &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; angajați, numerotați de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, organizați ierarhic, astfel că fiecare angajat are un șef direct, cu excepția directorului general, care nu are șef. Fiecare angajat al firmei are un salariu cunoscut, exprimat printr-un număr natural. În firmă funcționează un sistem de recompensare a angajaților astfel încât câștigul fiecărui salariat este egal cu salariul său la care se adaugă media aritmetică a câștigurilor subordonaților săi direcți. Excepție fac angajații care nu au subordonați direcți, pentru care câștigul este egal cu salariul.&lt;br /&gt;
&lt;br /&gt;
Determinați care este câștigul directorului general al firmei.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;firma1IN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul de angajați &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pe linia a doua se află &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, reprezentând structura ierarhică a firmei: al &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;-lea număr din șir precizează care este șeful direct al angajatului cu numărul de ordine &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;. Pentru directorul general valoarea corespunzătoare este &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Linia a treia conține, în ordine, salariile celor &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; angajați.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;firma1OUT.txt&amp;lt;/code&amp;gt; va conține pe prima linie numărul &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, reprezentând câștigul directorului general.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* salariul fiecărui angajat este un număr natural nenul cel mult egal cu &amp;lt;code&amp;gt;1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* media aritmetică a câștigurilor subordonaților fiecărui angajat se aproximează prin adaos, astfel încât să fie număr natural&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
firma1IN.txt:&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
4 3 0 3 2 1 2 1&lt;br /&gt;
&lt;br /&gt;
2 6 4 3 7 3 1 5&lt;br /&gt;
&lt;br /&gt;
firma1OUT.txt:&lt;br /&gt;
&lt;br /&gt;
14&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
firma1IN.txt:&lt;br /&gt;
&lt;br /&gt;
101&lt;br /&gt;
&lt;br /&gt;
4 3 0 3 2 1 2 1&lt;br /&gt;
&lt;br /&gt;
2 6 4 3 7 3 1 5&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input necorespunzator&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n, v):&lt;br /&gt;
    if 1&amp;gt;n or 101&amp;lt;=n:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(len(v)):&lt;br /&gt;
        if v[i] &amp;lt; 0 or v[i] &amp;gt; 1000:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
n = 0&lt;br /&gt;
t = [0] * 105&lt;br /&gt;
salariu = [0] * 105&lt;br /&gt;
castig = [0] * 105&lt;br /&gt;
&lt;br /&gt;
def dfs(k):&lt;br /&gt;
    global castig&lt;br /&gt;
    s = 0&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        if t[i] == k:&lt;br /&gt;
            dfs(i)&lt;br /&gt;
            cnt += 1&lt;br /&gt;
            s += castig[i]&lt;br /&gt;
    if cnt &amp;gt; 0:&lt;br /&gt;
        if s % cnt == 0:&lt;br /&gt;
            s //= cnt&lt;br /&gt;
        else:&lt;br /&gt;
            s = s // cnt + 1&lt;br /&gt;
    castig[k] = s + salariu[k]&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;firma1IN.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        n = int(fin.readline())&lt;br /&gt;
        t[1:n+1] = map(int, fin.readline().split())&lt;br /&gt;
        salariu[1:n+1] = map(int, fin.readline().split())&lt;br /&gt;
        if not verificare(n, salariu):&lt;br /&gt;
            print(&amp;quot;Input necorespunzator&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
&lt;br /&gt;
    r = 0&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        if t[i] == 0:&lt;br /&gt;
            r = i&lt;br /&gt;
&lt;br /&gt;
    dfs(r)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;firma1OUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(str(castig[r]))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0645_%E2%80%93_Det_Drum3&amp;diff=8867</id>
		<title>0645 – Det Drum3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0645_%E2%80%93_Det_Drum3&amp;diff=8867"/>
		<updated>2024-01-03T15:29:32Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se dă vectorul de tați al unui arbore cu rădăcină cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri în care fiecare nod are asociată o valoare numerică. Determinați drumul de la rădăcină la un nod terminal pentru care suma valorilor asociate nodurilor este maximă.  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;detdrum3IN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul de noduri &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. Pe linia următoare se află vectorul de tați al arborelui, valorile fiind separate...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă vectorul de tați al unui arbore cu rădăcină cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri în care fiecare nod are asociată o valoare numerică. Determinați drumul de la rădăcină la un nod terminal pentru care suma valorilor asociate nodurilor este maximă.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;detdrum3IN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul de noduri &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. Pe linia următoare se află vectorul de tați al arborelui, valorile fiind separate prin spații. Pe următoarea linie se află, în ordine, valorile asociate nodurilor din arbore.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;detdrum3OUT.txt&amp;lt;/code&amp;gt; va conține pe prima linie suma maxima determinată, iar pe a doua linie nodurile care alcătuiesc drumul determinat, separate printr-un spațiu. Dacă există mai multe noduri terminale pentru care suma valorilor nodurilor situate pe drumul de la rădăcină la nod este maximă, se va afișa drumul spre nodul cu numărul de ordine minim.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* în vectorul de tați rădăcina este marcată cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
* valorile asociate nodurile din arbore sunt numere naturale mai mici decât &amp;lt;code&amp;gt;1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
detdrum3IN.txt:&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
4 3 0 3 2 1 4 1&lt;br /&gt;
&lt;br /&gt;
2 5 2 1 3 5 3 1&lt;br /&gt;
&lt;br /&gt;
detdtrum3OUT.txt:&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
3 2 5 &lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
detdrum3IN.txt:&lt;br /&gt;
&lt;br /&gt;
101&lt;br /&gt;
&lt;br /&gt;
4 3 0 3 2 1 4 1&lt;br /&gt;
&lt;br /&gt;
2 5 2 1 3 5 3 1&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input necorespunzator&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n, v):&lt;br /&gt;
    if 1&amp;gt;n or 101&amp;lt;=n:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(len(v)):&lt;br /&gt;
        if v[i] &amp;lt; 0 or v[i] &amp;gt; 1000:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;detdrum3IN.txt&amp;quot;) as f:&lt;br /&gt;
    n = int(next(f))&lt;br /&gt;
    t = [0] + list(map(int, next(f).split()))&lt;br /&gt;
    v = [0] + list(map(int, next(f).split()))&lt;br /&gt;
    if not verificare(n,v):&lt;br /&gt;
        print(&amp;quot;Input necorespunzator&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
result = []&lt;br /&gt;
maxim = float(&amp;quot;-inf&amp;quot;)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    c = 0&lt;br /&gt;
&lt;br /&gt;
    for x in t[1:]:&lt;br /&gt;
        if x == i:&lt;br /&gt;
            c += 1&lt;br /&gt;
&lt;br /&gt;
    if c == 0:&lt;br /&gt;
        p = t[i]&lt;br /&gt;
        s = v[i]&lt;br /&gt;
&lt;br /&gt;
        while p:&lt;br /&gt;
            s += v[p]&lt;br /&gt;
            p = t[p]&lt;br /&gt;
&lt;br /&gt;
        maxim = max(maxim, s)&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;detdrum3OUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    print(maxim, file=fout)&lt;br /&gt;
&lt;br /&gt;
    valid = False&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        c = 0&lt;br /&gt;
&lt;br /&gt;
        for x in t[1:]:&lt;br /&gt;
            if x == i:&lt;br /&gt;
                c += 1&lt;br /&gt;
&lt;br /&gt;
        if c == 0:&lt;br /&gt;
            p = t[i]&lt;br /&gt;
            s = v[i]&lt;br /&gt;
&lt;br /&gt;
            while p:&lt;br /&gt;
                s += v[p]&lt;br /&gt;
                p = t[p]&lt;br /&gt;
&lt;br /&gt;
            if s == maxim and not valid:&lt;br /&gt;
                valid = True&lt;br /&gt;
                result.append(i)&lt;br /&gt;
                p = t[i]&lt;br /&gt;
                while p:&lt;br /&gt;
                    result.append(p)&lt;br /&gt;
                    p = t[p]&lt;br /&gt;
&lt;br /&gt;
    for x in result[::-1]:&lt;br /&gt;
        print(x, end=&amp;quot; &amp;quot;, file=fout)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0644_%E2%80%93_Det_Drum2&amp;diff=8861</id>
		<title>0644 – Det Drum2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0644_%E2%80%93_Det_Drum2&amp;diff=8861"/>
		<updated>2024-01-03T15:04:41Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se dă vectorul de tați al unui arbore cu rădăcină cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri și doua noduri &amp;lt;code&amp;gt;p q&amp;lt;/code&amp;gt;. Determinați drumul elementar de la nodul &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; la nodul &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt;.  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;detdrum2IN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul de noduri &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și nodurile &amp;lt;code&amp;gt;p q&amp;lt;/code&amp;gt;. Pe linia următoare se află vectorul de tați al arborelui, valorile fiind separate prin spații.  = Date de ie...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă vectorul de tați al unui arbore cu rădăcină cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri și doua noduri &amp;lt;code&amp;gt;p q&amp;lt;/code&amp;gt;. Determinați drumul elementar de la nodul &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; la nodul &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;detdrum2IN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul de noduri &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și nodurile &amp;lt;code&amp;gt;p q&amp;lt;/code&amp;gt;. Pe linia următoare se află vectorul de tați al arborelui, valorile fiind separate prin spații.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;detdrum2OUT.txt&amp;lt;/code&amp;gt; va conține pe prima linie nodurile care alcătuiesc drumul determinat, separate printr-un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ k ≤ n&amp;lt;/code&amp;gt;&lt;br /&gt;
* în vectorul de tați rădăcina este marcată cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
detdrum2IN.txt:&lt;br /&gt;
&lt;br /&gt;
7 2 5&lt;br /&gt;
&lt;br /&gt;
4 1 7 0 7 7 1&lt;br /&gt;
&lt;br /&gt;
detdrum2OUT.txt:&lt;br /&gt;
&lt;br /&gt;
2 1 7 5 &lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
detdrum2IN.txt:&lt;br /&gt;
&lt;br /&gt;
101 2 5&lt;br /&gt;
&lt;br /&gt;
4 1 7 0 7 7 1&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Error: n should be between 1 and 100 (inclusive).&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validate_input(n, k):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 100):&lt;br /&gt;
        print(&amp;quot;Error: n should be between 1 and 100 (inclusive).&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= k &amp;lt;= n):&lt;br /&gt;
        print(&amp;quot;Error: k should be between 1 and n (inclusive).&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;detdrum2IN.txt&amp;quot;, &amp;quot;r&amp;quot;) as infile:&lt;br /&gt;
    n, p, q = map(int, infile.readline().split())&lt;br /&gt;
    t = [0] + list(map(int, infile.readline().split()))&lt;br /&gt;
    if not validate_input(n, p) or not validate_input(n, q):&lt;br /&gt;
        exit()&lt;br /&gt;
        &lt;br /&gt;
v1, v2 = [], []&lt;br /&gt;
&lt;br /&gt;
def afis(x, b):&lt;br /&gt;
    if x != 0 and t[x] != 0:&lt;br /&gt;
        b.append(x)&lt;br /&gt;
        afis(t[x], b)&lt;br /&gt;
&lt;br /&gt;
ok1, ok2 = 0, 0&lt;br /&gt;
afis(p, v1)&lt;br /&gt;
afis(q, v2)&lt;br /&gt;
nr1, nr2 = len(v1), len(v2)&lt;br /&gt;
&lt;br /&gt;
for i in range(1, nr1 + 1):&lt;br /&gt;
    for j in range(1, nr2 + 1):&lt;br /&gt;
        if v1[i - 1] == v2[j - 1]:&lt;br /&gt;
            ok1 = i&lt;br /&gt;
            ok2 = j&lt;br /&gt;
            break&lt;br /&gt;
with open(&amp;quot;detdrum2OUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as outfile:&lt;br /&gt;
    for i in range(0, ok1):&lt;br /&gt;
        outfile.write(f&amp;quot;{v1[i]} &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    for i in range(ok2 - 2, -1, -1):&lt;br /&gt;
        outfile.write(f&amp;quot;{v2[i]} &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0643_%E2%80%93_Det_Drum1&amp;diff=8851</id>
		<title>0643 – Det Drum1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0643_%E2%80%93_Det_Drum1&amp;diff=8851"/>
		<updated>2024-01-03T14:48:00Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se dă vectorul de tați al unui arbore cu rădăcină cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri și un nod &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;. Determinați drumul de la rădăcina arborelui la nodul &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;.  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;detdrum1IN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul de noduri &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și nodul &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;. Pe linia următoare se află vectorul de tați al arborelui, valorile fiind separate prin spații.  = Date de ieșire = Fișierul de i...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă vectorul de tați al unui arbore cu rădăcină cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri și un nod &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;. Determinați drumul de la rădăcina arborelui la nodul &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;detdrum1IN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul de noduri &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și nodul &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;. Pe linia următoare se află vectorul de tați al arborelui, valorile fiind separate prin spații.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;detdrum1OUT.txt&amp;lt;/code&amp;gt; va conține pe prima linie nodurile care alcătuiesc drumul determinat, separate printr-un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ k ≤ n&amp;lt;/code&amp;gt;&lt;br /&gt;
* în vectorul de tați rădăcina este marcată cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
detdrum1IN.txt:&lt;br /&gt;
&lt;br /&gt;
7 2&lt;br /&gt;
&lt;br /&gt;
4 1 7 0 7 7 1&lt;br /&gt;
&lt;br /&gt;
detdrum1OUT.txt:&lt;br /&gt;
&lt;br /&gt;
4 1 2&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
detdrum1IN.txt:&lt;br /&gt;
&lt;br /&gt;
101 2&lt;br /&gt;
&lt;br /&gt;
4 1 7 0 7 7 1&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Invalid input. Please check the conditions.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def is_valid_input(n, k):&lt;br /&gt;
    return 1 &amp;lt;= n &amp;lt;= 100 and 1 &amp;lt;= k &amp;lt;= n&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;detdrum1IN.txt&amp;quot;, &amp;quot;r&amp;quot;) as infile, open(&amp;quot;detdrum1OUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as outfile:&lt;br /&gt;
    n, k = map(int, infile.readline().split())&lt;br /&gt;
&lt;br /&gt;
    if not is_valid_input(n, k):&lt;br /&gt;
        print(&amp;quot;Invalid input. Please check the conditions.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        t = [0] + list(map(int, infile.readline().split()))&lt;br /&gt;
&lt;br /&gt;
        def detdrum(nod):&lt;br /&gt;
            if nod == 0:&lt;br /&gt;
                return&lt;br /&gt;
            detdrum(t[nod])&lt;br /&gt;
            outfile.write(str(nod) + &amp;quot; &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        detdrum(k)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0642_%E2%80%93_Det_Drum&amp;diff=8803</id>
		<title>0642 – Det Drum</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0642_%E2%80%93_Det_Drum&amp;diff=8803"/>
		<updated>2024-01-02T21:28:54Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se dă vectorul de tați al unui arbore cu rădăcină cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri și un nod &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;. Determinați drumul de la nodul &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; la rădăcina arborelui.  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;detdrumIN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul de noduri &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și nodul &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;. Pe linia următoare se află vectorul de tați al arborelui, valorile fiind separate prin spații.  = Date de ieșire = Fișierul de ie...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă vectorul de tați al unui arbore cu rădăcină cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri și un nod &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;. Determinați drumul de la nodul &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; la rădăcina arborelui.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;detdrumIN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul de noduri &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și nodul &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;. Pe linia următoare se află vectorul de tați al arborelui, valorile fiind separate prin spații.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;detdrumOUT.txt&amp;lt;/code&amp;gt; va conține pe prima linie nodurile care alcătuiesc drumul determinat, separate printr-un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ k ≤ n&amp;lt;/code&amp;gt;&lt;br /&gt;
* în vectorul de tați rădăcina este marcată cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
detdrumIN.txt:&lt;br /&gt;
&lt;br /&gt;
7 2&lt;br /&gt;
&lt;br /&gt;
4 1 7 0 7 7 1&lt;br /&gt;
&lt;br /&gt;
detdrumOUT.txt:&lt;br /&gt;
&lt;br /&gt;
2 1 4&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
detdrumIN.txt:&lt;br /&gt;
&lt;br /&gt;
101 2&lt;br /&gt;
&lt;br /&gt;
4 1 7 0 7 7 1&lt;br /&gt;
&lt;br /&gt;
detdrumOUT.txt:&lt;br /&gt;
&lt;br /&gt;
Invalid input. Constraints not satisfied.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verify_constraints(n, k):&lt;br /&gt;
    return 1 &amp;lt;= n &amp;lt;= 100 and 1 &amp;lt;= k &amp;lt;= n&lt;br /&gt;
&lt;br /&gt;
def solve_detdrum(n, k, t):&lt;br /&gt;
    a = [0] * 101&lt;br /&gt;
    rad = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        if t[i - 1] == 0:&lt;br /&gt;
            rad = i&lt;br /&gt;
        a[i] = t[i - 1]&lt;br /&gt;
&lt;br /&gt;
    result = []&lt;br /&gt;
&lt;br /&gt;
    def afis(x, a):&lt;br /&gt;
        nonlocal result&lt;br /&gt;
        if x != 0 and t[x - 1]:&lt;br /&gt;
            result.append(x)&lt;br /&gt;
            afis(t[x - 1], a)&lt;br /&gt;
&lt;br /&gt;
    afis(k, a)&lt;br /&gt;
    result.append(rad)&lt;br /&gt;
    return result&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;detdrumIN.txt&amp;quot;, &amp;quot;r&amp;quot;) as infile, open(&amp;quot;detdrumOUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as outfile:&lt;br /&gt;
        n, k = map(int, infile.readline().split())&lt;br /&gt;
&lt;br /&gt;
        if not verify_constraints(n, k):&lt;br /&gt;
            outfile.write(&amp;quot;Invalid input. Constraints not satisfied.&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            t = list(map(int, infile.readline().split()))&lt;br /&gt;
&lt;br /&gt;
            result = solve_detdrum(n, k, t)&lt;br /&gt;
&lt;br /&gt;
            outfile.write(&amp;quot; &amp;quot;.join(map(str, result)))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0651_%E2%80%93_Sum_Sub_Max&amp;diff=8798</id>
		<title>0651 – Sum Sub Max</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0651_%E2%80%93_Sum_Sub_Max&amp;diff=8798"/>
		<updated>2024-01-02T21:12:38Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se dă vectorul de tați al unui arbore cu rădăcină cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri. Fiecare nod al arborelui are asociată o valoare numerică întreagă. Determinați nodurile &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; din arbore pentru care suma valorilor asociate nodurilor din subarborele cu rădăcina în &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; este maximă.  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;sumsubmaxIN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul de noduri &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. Pe a doua linie se află vec...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă vectorul de tați al unui arbore cu rădăcină cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri. Fiecare nod al arborelui are asociată o valoare numerică întreagă. Determinați nodurile &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; din arbore pentru care suma valorilor asociate nodurilor din subarborele cu rădăcina în &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; este maximă.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;sumsubmaxIN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul de noduri &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. Pe a doua linie se află vectorul de tați al arborelui, valorile fiind separate prin spații. Pe linia a treia se află, în ordine, valorile asociate nodurilor din arbore, separate și ele prin spații.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;sumsubmaxOUT.txt&amp;lt;/code&amp;gt; va conține, în ordine crescătoare, nodurile &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; din arbore pentru care suma valorilor asociate nodurilor din subarborele cu rădăcina în &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; este maximă, separate printr-un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* în vectorul de tați rădăcina este marcată cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
* valorile asociate nodurilor din arbore sunt numere întregi din intervalul &amp;lt;code&amp;gt;[-1000,1000]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
sumsubmaxIN.txt:&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
4 3 0 3 2 1 2 1&lt;br /&gt;
&lt;br /&gt;
-3 2 -7 4 0 3 3 1&lt;br /&gt;
&lt;br /&gt;
sumsubmaxOUT.txt:&lt;br /&gt;
&lt;br /&gt;
2 4 &lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
În subarborii cu rădăcina în &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; suma valorilor asociate nodurilor este &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; și este maximă.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
sumsubmaxIN.txt:&lt;br /&gt;
&lt;br /&gt;
101&lt;br /&gt;
&lt;br /&gt;
4 3 0 3 2 1 2 1&lt;br /&gt;
&lt;br /&gt;
-3 2 -7 4 0 3 3 1&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Invalid input. Please check the constraints.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def is_valid_input(n, t, val):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 100):&lt;br /&gt;
        return False&lt;br /&gt;
    &lt;br /&gt;
    if len(t) != n + 1 or len(val) != n + 1:&lt;br /&gt;
        return False&lt;br /&gt;
    &lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        if not (-1000 &amp;lt;= val[i] &amp;lt;= 1000):&lt;br /&gt;
            return False&lt;br /&gt;
    &lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def dfs(k):&lt;br /&gt;
    v[k] = 1&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        if i &amp;lt; len(t) and t[i] == k and not v[i]:&lt;br /&gt;
            dfs(i)&lt;br /&gt;
&lt;br /&gt;
# Read input from file&lt;br /&gt;
with open(&amp;quot;sumsubmaxIN.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
    n = int(fin.readline().strip())&lt;br /&gt;
    t = [0] + list(map(int, fin.readline().split()))  # Adjust for 1-based indexing&lt;br /&gt;
    val = [0] + list(map(int, fin.readline().split()))  # Adjust for 1-based indexing&lt;br /&gt;
&lt;br /&gt;
    # Check input constraints&lt;br /&gt;
if not is_valid_input(n, t, val):&lt;br /&gt;
    print(&amp;quot;Invalid input. Please check the constraints.&amp;quot;)&lt;br /&gt;
    exit()&lt;br /&gt;
&lt;br /&gt;
smax = [0] * (n + 1)&lt;br /&gt;
&lt;br /&gt;
# Perform DFS and calculate sum of values for each subtree&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    v = [0] * (n + 1)&lt;br /&gt;
    dfs(i)&lt;br /&gt;
    for j in range(1, n + 1):&lt;br /&gt;
        if j &amp;lt; len(v) and v[j] == 1:&lt;br /&gt;
            smax[i] += val[j]&lt;br /&gt;
&lt;br /&gt;
# Find the maximum sum&lt;br /&gt;
ma = max(smax)&lt;br /&gt;
&lt;br /&gt;
# Write output to file&lt;br /&gt;
with open(&amp;quot;sumsubmaxOUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        if smax[i] == ma:&lt;br /&gt;
            fout.write(f&amp;quot;{i} &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0931_-_Sortare_Unghi&amp;diff=8795</id>
		<title>0931 - Sortare Unghi</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0931_-_Sortare_Unghi&amp;diff=8795"/>
		<updated>2024-01-02T20:52:53Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerința = Se dau puncte distincte în plan. Asociem fiecărui punct semidreapta care pornește din originea sistemului de coordonate și trece prin acel punct. Să se afișeze punctele în ordine crescătoare a unghiului pe care semidreapta asociată îl face cu semidreapta spre plus infinit a axei &amp;lt;code&amp;gt;OX&amp;lt;/code&amp;gt;. Dacă două unghiuri sunt egale se va afișa punctul cel mai apropiat de origine.  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;sortareunghiIN.txt&amp;lt;/code&amp;gt; con...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dau puncte distincte în plan. Asociem fiecărui punct semidreapta care pornește din originea sistemului de coordonate și trece prin acel punct. Să se afișeze punctele în ordine crescătoare a unghiului pe care semidreapta asociată îl face cu semidreapta spre plus infinit a axei &amp;lt;code&amp;gt;OX&amp;lt;/code&amp;gt;. Dacă două unghiuri sunt egale se va afișa punctul cel mai apropiat de origine.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;sortareunghiIN.txt&amp;lt;/code&amp;gt; conține pe prima linie &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, reprezentând numărul de puncte. Pe următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii se găsesc câte două numere separate printr-un spațiu, reprezentând abscisa respectiv ordonata câte unui punct.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;sortareunghiOUT.txt&amp;lt;/code&amp;gt; va conține &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii cu câte două numere separate prin câte un spațiu, reprezentând abscisa respectiv ordonata câte unui punct, în ordinea cerută.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* Numerele din fișierul de intrare sunt întregi cuprinse între &amp;lt;code&amp;gt;-1001&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;1001&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Unghiurile sunt în intervalul &amp;lt;code&amp;gt;[0,360)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
sortareunghiIN.txt:&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
1 1 &lt;br /&gt;
&lt;br /&gt;
-1 -1 &lt;br /&gt;
&lt;br /&gt;
-1 1&lt;br /&gt;
&lt;br /&gt;
sortareunghiOUT.txt:&lt;br /&gt;
&lt;br /&gt;
1 1&lt;br /&gt;
&lt;br /&gt;
-1 1&lt;br /&gt;
&lt;br /&gt;
-1 -1&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
sortareunghiIN.txt:&lt;br /&gt;
&lt;br /&gt;
101&lt;br /&gt;
&lt;br /&gt;
1 1 &lt;br /&gt;
&lt;br /&gt;
-1 -1 &lt;br /&gt;
&lt;br /&gt;
-1 1&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Error: n should be between 1 and 100.&lt;br /&gt;
&lt;br /&gt;
Exiting due to constraint violations.&lt;br /&gt;
&lt;br /&gt;
== Ex ==&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
class Element:&lt;br /&gt;
    def __init__(self, x, y):&lt;br /&gt;
        self.x = x&lt;br /&gt;
        self.y = y&lt;br /&gt;
&lt;br /&gt;
def check_constraints(n, elements):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 100:&lt;br /&gt;
        print(&amp;quot;Error: n should be between 1 and 100.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    &lt;br /&gt;
    for elem in elements:&lt;br /&gt;
        if not -1001 &amp;lt;= elem.x &amp;lt;= 1001 or not -1001 &amp;lt;= elem.y &amp;lt;= 1001:&lt;br /&gt;
            print(&amp;quot;Error: Element coordinates should be between -1001 and 1001.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def distance(a):&lt;br /&gt;
    return a.x ** 2 + a.y ** 2&lt;br /&gt;
&lt;br /&gt;
def read_elements():&lt;br /&gt;
    elements = []&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        with open(&amp;quot;sortareunghiIN.txt&amp;quot;, &amp;quot;r&amp;quot;) as file:&lt;br /&gt;
            n = int(file.readline())&lt;br /&gt;
            for _ in range(n):&lt;br /&gt;
                line = file.readline().strip()&lt;br /&gt;
                if line:&lt;br /&gt;
                    x, y = map(int, line.split())&lt;br /&gt;
                    elements.append(Element(x, y))&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Error: Incorrect input format.&amp;quot;)&lt;br /&gt;
        return 0, []&lt;br /&gt;
&lt;br /&gt;
    return n, elements&lt;br /&gt;
&lt;br /&gt;
def print_elements(elements):&lt;br /&gt;
    with open(&amp;quot;sortareunghiOUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as file:&lt;br /&gt;
        for elem in elements:&lt;br /&gt;
            file.write(f&amp;quot;{elem.x} {elem.y}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def angle(a):&lt;br /&gt;
    if a.x &amp;gt; 0 and a.y &amp;gt; 0:&lt;br /&gt;
        return 1.0 * a.y / a.x&lt;br /&gt;
    elif a.x &amp;lt; 0 and a.y &amp;gt; 0:&lt;br /&gt;
        return 10000 + 1.0 * (-a.x) / a.y&lt;br /&gt;
    elif a.x &amp;lt; 0 and a.y &amp;lt; 0:&lt;br /&gt;
        return 20000 + 1.0 * a.y / a.x&lt;br /&gt;
    elif a.x &amp;gt; 0 and a.y &amp;lt; 0:&lt;br /&gt;
        return 30000 + 1.0 * a.x / (-a.y)&lt;br /&gt;
    elif a.x == 0:&lt;br /&gt;
        if a.y &amp;gt; 0:&lt;br /&gt;
            return 10000&lt;br /&gt;
        else:&lt;br /&gt;
            return 30000&lt;br /&gt;
    elif a.y == 0:&lt;br /&gt;
        if a.x &amp;gt; 0:&lt;br /&gt;
            return 0&lt;br /&gt;
        else:&lt;br /&gt;
            return 20000&lt;br /&gt;
&lt;br /&gt;
def compare(a, b):&lt;br /&gt;
    return angle(a) &amp;lt; angle(b) or (angle(a) == angle(b) and distance(a) &amp;lt; distance(b))&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, elements = read_elements()&lt;br /&gt;
&lt;br /&gt;
    if n &amp;gt; 0 and check_constraints(n, elements):&lt;br /&gt;
        elements.sort(key=lambda x: (angle(x), distance(x)))&lt;br /&gt;
        print_elements(elements)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Exiting due to constraint violations.&amp;quot;)&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>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2751_-_BB_Security&amp;diff=8788</id>
		<title>2751 - BB Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2751_-_BB_Security&amp;diff=8788"/>
		<updated>2024-01-02T19:54:43Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: Domnul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; lucrează la BB Security ca paznic.  Deoarece în România sunt foarte puțini hoți, acesta s-a gândit într-o zi să calculeze distanța dintre fiecare doi stâlpi de îngrădire din instituția pe care o păzește. Fiecare doi stâlpi de îngrădire sunt legați printr-un cablu rezistent, care, de obicei nu stă întins la maximum.  Din cauză ca în instituție se găsesc mulți stâlpi, domnul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; vă provoacă pe voi să calculați ce...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Domnul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; lucrează la BB Security ca paznic.&lt;br /&gt;
&lt;br /&gt;
Deoarece în România sunt foarte puțini hoți, acesta s-a gândit într-o zi să calculeze distanța dintre fiecare doi stâlpi de îngrădire din instituția pe care o păzește. Fiecare doi stâlpi de îngrădire sunt legați printr-un cablu rezistent, care, de obicei nu stă întins la maximum.&lt;br /&gt;
&lt;br /&gt;
Din cauză ca în instituție se găsesc mulți stâlpi, domnul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; vă provoacă pe voi să calculați ce și-a propus el.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Se dă un număr &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; triplete de forma &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt;, reprezentând lungimea egala a doi stâlpi, lungimea cablului dintre acestea și înălțimea la care atârnă cablul față de podea.&lt;br /&gt;
&lt;br /&gt;
Se cere să se afle distanța dintre fiecare doi stâlpi.&lt;br /&gt;
&lt;br /&gt;
Fiecare rezultat va fi afișat pe cate un rând nou.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură un număr &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și apoi &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; triplete de forma &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt;, cu semnificația de mai sus.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe linia &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; a ecranului un număr de forma &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; care reprezintă lungimea dintre cei doi stâlpi, corespunzătoare datelor de pe linia &amp;lt;code&amp;gt;n+1&amp;lt;/code&amp;gt; din consola de citire, cu exact două zecimale, indiferent de caz, rotunjind a doua zecimală în comparație cu cea de-a treia, sau, dacă a doua zecimală este &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, zecimala a doua va crește cu o unitate doar dacă există încă una sau mai multe zecimale după cea de-a treia și măcar una din ele este &amp;lt;code&amp;gt;&amp;gt; 0&amp;lt;/code&amp;gt; (vezi Restricții).&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100.000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere citite vor fi mai mici decât &amp;lt;code&amp;gt;1.000.000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* &amp;lt;code&amp;gt;n, l, c, h&amp;lt;/code&amp;gt; sunt numere naturale;&lt;br /&gt;
* este garantat că pentru orice triplet citit există un număr &amp;lt;code&amp;gt;0 ≤ x ≤ c&amp;lt;/code&amp;gt;;&lt;br /&gt;
* cea de-a doua zecimala se rotunjește de obicei după cea de-a treia (ex. &amp;lt;code&amp;gt;49.4376&amp;lt;/code&amp;gt; se va afișa ca &amp;lt;code&amp;gt;49.44&amp;lt;/code&amp;gt;);&lt;br /&gt;
* ∀ &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;| &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; ∈ ℕ, acesta se va afișa ca &amp;lt;code&amp;gt;a.00&amp;lt;/code&amp;gt; (ex. &amp;lt;code&amp;gt;50&amp;lt;/code&amp;gt; se va afișa ca &amp;lt;code&amp;gt;50.00&amp;lt;/code&amp;gt;);&lt;br /&gt;
* Atenție! &amp;lt;code&amp;gt;23.455 = 23.45 , 23.45501 = 23.46&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
60 100 20&lt;br /&gt;
&lt;br /&gt;
100 50 100&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
49.44&lt;br /&gt;
&lt;br /&gt;
50.00&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Pentru primul triplet lungimea dintre cei doi stâlpi este &amp;lt;code&amp;gt;49.44&amp;lt;/code&amp;gt;, iar pentru al doilea cablul este întins la maximum și lungimea dintre cei doi stâlpi este &amp;lt;code&amp;gt;50.00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
34 7.2 9.1&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Numerele trebuie să fie naturale.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
def verifica_conditii(n, tests):&lt;br /&gt;
    results = []&lt;br /&gt;
    &lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        l, c, h = tests[i]&lt;br /&gt;
        &lt;br /&gt;
        # Verificare dacă numerele sunt naturale&lt;br /&gt;
        if not all(map(lambda x: x.is_integer() and x &amp;gt;= 0, [l, c, h])):&lt;br /&gt;
            results.append(&amp;quot;Numerele trebuie să fie naturale.&amp;quot;)&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        if h == l:&lt;br /&gt;
            results.append(f&amp;quot;{int(c):.2f}&amp;quot;)&lt;br /&gt;
        elif c / 2 + h == l:&lt;br /&gt;
            results.append(&amp;quot;0.00&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            a = ((c**2 / 4) - (l - h)**2) / (2 * (l - h))&lt;br /&gt;
            t1 = 2 * a * math.log(math.sqrt((c**2 / 4) / (a**2) + 1) + (c / 2) / a)&lt;br /&gt;
            &lt;br /&gt;
            # Rotunjirea valorilor conform specificațiilor&lt;br /&gt;
            rounded_t1 = round(t1, 2)&lt;br /&gt;
            if rounded_t1.is_integer():&lt;br /&gt;
                results.append(f&amp;quot;{int(rounded_t1)}.00&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                results.append(f&amp;quot;{rounded_t1:.2f}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return results&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    tests = []&lt;br /&gt;
    &lt;br /&gt;
    for _ in range(n):&lt;br /&gt;
        l, c, h = map(float, input().split())&lt;br /&gt;
        tests.append((l, c, h))&lt;br /&gt;
    &lt;br /&gt;
    results = verifica_conditii(n, tests)&lt;br /&gt;
    for result in results:&lt;br /&gt;
        print(result)&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>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2636_-_Noduri_Izolate&amp;diff=8784</id>
		<title>2636 - Noduri Izolate</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2636_-_Noduri_Izolate&amp;diff=8784"/>
		<updated>2024-01-02T19:32:34Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: /* Exemplul 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dau două numere &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;. Aflați care este numărul minim și numărul maxim de noduri izolate într-un graf neorientat cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; muchii în care nu există o muchie de la un nod la el însuși și între oricare două noduri diferite există cel mult o muchie.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;n m&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran numerele &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, reprezentând numărul minim, respectiv numărul maxim de noduri izolate într-un graf neorientat cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; noduri și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; muchii în care nu există o muchie de la un nod la el însuși și între oricare două noduri diferite există cel mult o muchie.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* 0&amp;lt;=m&amp;lt;=n*(n-1)/2&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1 =&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
4 2&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
0 1&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Se poate construi un graf fără noduri izolate, cu muchiile &amp;lt;code&amp;gt;(1,2)&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;(3,4)&amp;lt;/code&amp;gt;. Pentru a obține un nod izolat, putem construi un graf cu muchiile &amp;lt;code&amp;gt;(1,2)&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;(1,3)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
99999999 2&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Restrictiile nu sunt indeplinite.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def check_restrictions(n, m):&lt;br /&gt;
    return 1 &amp;lt;= n &amp;lt;= 100000 and 0 &amp;lt;= m &amp;lt;= n * (n - 1) // 2&lt;br /&gt;
&lt;br /&gt;
def calculate_isolated_nodes(n, m):&lt;br /&gt;
    # Verifică restricțiile&lt;br /&gt;
    if not check_restrictions(n, m):&lt;br /&gt;
        print(&amp;quot;Restrictiile nu sunt indeplinite.&amp;quot;)&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
    # Numărul minim de noduri izolate&lt;br /&gt;
    min_isolated_nodes = 0&lt;br /&gt;
&lt;br /&gt;
    # Numărul maxim de noduri izolate&lt;br /&gt;
    max_isolated_nodes = max(0, min(n - m, 1))&lt;br /&gt;
&lt;br /&gt;
    return min_isolated_nodes, max_isolated_nodes&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul de noduri (n): &amp;quot;))&lt;br /&gt;
    m = int(input(&amp;quot;Introduceti numarul de muchii (m): &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    result = calculate_isolated_nodes(n, m)&lt;br /&gt;
&lt;br /&gt;
    if result is not None:&lt;br /&gt;
        min_isolated, max_isolated = result&lt;br /&gt;
        print(f&amp;quot;Numarul minim de noduri izolate: {min_isolated}&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;Numarul maxim de noduri izolate: {max_isolated}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0471_-_Bipartit&amp;diff=8188</id>
		<title>0471 - Bipartit</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0471_-_Bipartit&amp;diff=8188"/>
		<updated>2023-12-16T15:25:41Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerinţa = Se dă lista muchiilor unui graf neorientat cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; vârfuri, etichetate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, precum si o mulțime &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; de vârfuri ale grafului. Considerăm mulțimea &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; formată din vărfurile grafului care nu aparțin lui &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;. Să se verifice dacă graful este bipartit peste partiția formată din mulțimile &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;.  = Date de intrare = Fişierul de intrare &amp;lt;code&amp;gt;bipartitI...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerinţa =&lt;br /&gt;
Se dă lista muchiilor unui graf neorientat cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; vârfuri, etichetate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, precum si o mulțime &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; de vârfuri ale grafului. Considerăm mulțimea &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; formată din vărfurile grafului care nu aparțin lui &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;. Să se verifice dacă graful este bipartit peste partiția formată din mulțimile &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;bipartitIN.txt&amp;lt;/code&amp;gt; conţine pe prima linie numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, reprezentând numărul de vârfuri ale grafului și numărul de muchii. Fiecare dintre următoarele &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; linii conține câte o pereche de numere &amp;lt;code&amp;gt;i j&amp;lt;/code&amp;gt;, cu semnificația că există muchie între &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;. Urmează un număr &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;, apoi &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; numere naturale distincte cuprinse între &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, reprezentând vârfurile din &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieşire =&lt;br /&gt;
Fişierul de ieşire &amp;lt;code&amp;gt;bipartitOUT.txt&amp;lt;/code&amp;gt; va conţine pe prima linie mesajul &amp;lt;code&amp;gt;DA&amp;lt;/code&amp;gt;, dacă graful este bipartit peste partiția formată din mulțimile &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;, respectiv &amp;lt;code&amp;gt;NU&amp;lt;/code&amp;gt; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
= Restricţii şi precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 &amp;lt; k  &amp;lt; n ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ i , j ≤ n&amp;lt;/code&amp;gt;&lt;br /&gt;
* muchiile se pot repeta în fișierul de intrare&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
bipartitIN.txt:&lt;br /&gt;
&lt;br /&gt;
7 6&lt;br /&gt;
&lt;br /&gt;
1 4&lt;br /&gt;
&lt;br /&gt;
1 6&lt;br /&gt;
&lt;br /&gt;
6 5&lt;br /&gt;
&lt;br /&gt;
3 2&lt;br /&gt;
&lt;br /&gt;
3 5&lt;br /&gt;
&lt;br /&gt;
3 7&lt;br /&gt;
&lt;br /&gt;
3 &lt;br /&gt;
&lt;br /&gt;
4 6 3&lt;br /&gt;
&lt;br /&gt;
bipartitOUT.txt:&lt;br /&gt;
&lt;br /&gt;
DA&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
bipartitIN.txt:&lt;br /&gt;
&lt;br /&gt;
999 6&lt;br /&gt;
&lt;br /&gt;
1 4&lt;br /&gt;
&lt;br /&gt;
1 6&lt;br /&gt;
&lt;br /&gt;
6 5&lt;br /&gt;
&lt;br /&gt;
3 2&lt;br /&gt;
&lt;br /&gt;
3 5&lt;br /&gt;
&lt;br /&gt;
3 7&lt;br /&gt;
&lt;br /&gt;
3 &lt;br /&gt;
&lt;br /&gt;
4 6 3&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Datele de intrare nu respectă restricțiile.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def is_bipartite(graph, vertices_in_a):&lt;br /&gt;
    colors = {}&lt;br /&gt;
    queue = []&lt;br /&gt;
&lt;br /&gt;
    for vertex in vertices_in_a:&lt;br /&gt;
        colors[vertex] = 1&lt;br /&gt;
        queue.append(vertex)&lt;br /&gt;
&lt;br /&gt;
    while queue:&lt;br /&gt;
        current_vertex = queue.pop(0)&lt;br /&gt;
&lt;br /&gt;
        for neighbor in graph[current_vertex]:&lt;br /&gt;
            if neighbor not in colors:&lt;br /&gt;
                colors[neighbor] = -colors[current_vertex]&lt;br /&gt;
                queue.append(neighbor)&lt;br /&gt;
            elif colors[neighbor] == colors[current_vertex]:&lt;br /&gt;
                return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def is_valid_input(n, m, k, edges):&lt;br /&gt;
    if not (1 &amp;lt; k &amp;lt; n &amp;lt;= 100):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for i, j in edges:&lt;br /&gt;
        if not (1 &amp;lt;= i &amp;lt;= n and 1 &amp;lt;= j &amp;lt;= n):&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
# Citirea datelor de intrare din fișier&lt;br /&gt;
with open(&amp;quot;bipartitIN.txt&amp;quot;, &amp;quot;r&amp;quot;) as input_file:&lt;br /&gt;
    n, m = map(int, input_file.readline().split())&lt;br /&gt;
    edges = [tuple(map(int, input_file.readline().split())) for _ in range(m)]&lt;br /&gt;
&lt;br /&gt;
    k = int(input_file.readline())&lt;br /&gt;
    vertices_in_a = set(map(int, input_file.readline().split()))&lt;br /&gt;
&lt;br /&gt;
# Verificare restricții pentru datele de intrare&lt;br /&gt;
if not is_valid_input(n, m, k, edges):&lt;br /&gt;
    print(&amp;quot;Datele de intrare nu respectă restricțiile.&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    # Inițializare graful&lt;br /&gt;
    graph = {i: [] for i in range(1, n + 1)}&lt;br /&gt;
&lt;br /&gt;
    # Adăugare muchii în graf&lt;br /&gt;
    for i, j in edges:&lt;br /&gt;
        graph[i].append(j)&lt;br /&gt;
        graph[j].append(i)&lt;br /&gt;
&lt;br /&gt;
    # Verificare dacă graful este bipartit&lt;br /&gt;
    result = is_bipartite(graph, vertices_in_a)&lt;br /&gt;
&lt;br /&gt;
    # Scrierea rezultatului în fișierul de ieșire&lt;br /&gt;
    with open(&amp;quot;bipartitOUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as output_file:&lt;br /&gt;
        output_file.write(&amp;quot;DA&amp;quot; if result else &amp;quot;NU&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0466_-_Gen_Graf&amp;diff=8187</id>
		<title>0466 - Gen Graf</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0466_-_Gen_Graf&amp;diff=8187"/>
		<updated>2023-12-16T15:17:11Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerinţa = Se dă un număr natural &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. Construiți toate grafurile neorientate cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; vârfuri.  = Date de intrare = Fişierul de intrare &amp;lt;code&amp;gt;gengrafIN.txt&amp;lt;/code&amp;gt; conţine pe prima linie numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.  = Date de ieşire = Fişierul de ieşire &amp;lt;code&amp;gt;gengrafOUT.txt&amp;lt;/code&amp;gt; va conţine pe prima linie numărul de grafuri generate &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;; urmează &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; matrice de adiacență ale acestor grafuri.  Fiecare matrice va fi afișat...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerinţa =&lt;br /&gt;
Se dă un număr natural &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. Construiți toate grafurile neorientate cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; vârfuri.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;gengrafIN.txt&amp;lt;/code&amp;gt; conţine pe prima linie numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieşire =&lt;br /&gt;
Fişierul de ieşire &amp;lt;code&amp;gt;gengrafOUT.txt&amp;lt;/code&amp;gt; va conţine pe prima linie numărul de grafuri generate &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;; urmează &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; matrice de adiacență ale acestor grafuri.&lt;br /&gt;
&lt;br /&gt;
Fiecare matrice va fi afișată astfel: câte o linie a matricei pe o linie a fișierului, elementele de pe o linie fiind separate prin exact un spațiu. După fiecare matrice afișată se va găsi în fișier o linie goală.&lt;br /&gt;
&lt;br /&gt;
= Restricţii şi precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ n ≤ 6&amp;lt;/code&amp;gt;&lt;br /&gt;
* cele &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; matrice de adiacență construite pot fi afișate în orice ordine&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
gengrafIN.txt:&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
gengrafOUT.txt:&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
0 0 0&lt;br /&gt;
&lt;br /&gt;
0 0 0&lt;br /&gt;
&lt;br /&gt;
0 0 0&lt;br /&gt;
&lt;br /&gt;
0 1 0&lt;br /&gt;
&lt;br /&gt;
1 0 0&lt;br /&gt;
&lt;br /&gt;
0 0 0&lt;br /&gt;
&lt;br /&gt;
0 0 1&lt;br /&gt;
&lt;br /&gt;
0 0 0&lt;br /&gt;
&lt;br /&gt;
1 0 0&lt;br /&gt;
&lt;br /&gt;
0 1 1&lt;br /&gt;
&lt;br /&gt;
1 0 0&lt;br /&gt;
&lt;br /&gt;
1 0 0&lt;br /&gt;
&lt;br /&gt;
0 0 0&lt;br /&gt;
&lt;br /&gt;
0 0 1&lt;br /&gt;
&lt;br /&gt;
0 1 0&lt;br /&gt;
&lt;br /&gt;
0 1 0&lt;br /&gt;
&lt;br /&gt;
1 0 1&lt;br /&gt;
&lt;br /&gt;
0 1 0&lt;br /&gt;
&lt;br /&gt;
0 0 1&lt;br /&gt;
&lt;br /&gt;
0 0 1&lt;br /&gt;
&lt;br /&gt;
1 1 0&lt;br /&gt;
&lt;br /&gt;
0 1 1&lt;br /&gt;
&lt;br /&gt;
1 0 1&lt;br /&gt;
&lt;br /&gt;
1 1 0&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
gengrafIN.txt:&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Valoarea lui n nu respectă restricția 2 &amp;lt;= n &amp;lt;= 6.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def generate_graphs(n):&lt;br /&gt;
    graphs = []&lt;br /&gt;
    for i in range(2**(n*(n-1)//2)):&lt;br /&gt;
        graph_matrix = [[0]*n for _ in range(n)]&lt;br /&gt;
        idx = 0&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            for k in range(j+1, n):&lt;br /&gt;
                graph_matrix[j][k] = graph_matrix[k][j] = (i &amp;gt;&amp;gt; idx) &amp;amp; 1&lt;br /&gt;
                idx += 1&lt;br /&gt;
        graphs.append(graph_matrix)&lt;br /&gt;
    return graphs&lt;br /&gt;
&lt;br /&gt;
def write_to_file(graphs, filename):&lt;br /&gt;
    with open(filename, &#039;w&#039;) as file:&lt;br /&gt;
        file.write(str(len(graphs)) + &#039;\n&#039;)&lt;br /&gt;
        for graph in graphs:&lt;br /&gt;
            for row in graph:&lt;br /&gt;
                file.write(&#039; &#039;.join(map(str, row)) + &#039;\n&#039;)&lt;br /&gt;
            file.write(&#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
def check_n_range(n):&lt;br /&gt;
    return 2 &amp;lt;= n &amp;lt;= 6&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&#039;gengrafIN.txt&#039;, &#039;r&#039;) as input_file:&lt;br /&gt;
        n = int(input_file.readline().strip())&lt;br /&gt;
&lt;br /&gt;
    if check_n_range(n):&lt;br /&gt;
        graphs = generate_graphs(n)&lt;br /&gt;
        write_to_file(graphs, &#039;gengrafOUT.txt&#039;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Valoarea lui n nu respectă restricția 2 &amp;lt;= n &amp;lt;= 6.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0421_-_Graf_Partial_1&amp;diff=8186</id>
		<title>0421 - Graf Partial 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0421_-_Graf_Partial_1&amp;diff=8186"/>
		<updated>2023-12-16T15:00:15Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerinţa =&lt;br /&gt;
Se dă lista muchiilor unui graf neorientat cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; vârfuri, etichetate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. Din acest graf se elimină toate muchiile cu o extremitate de grad maxim și cealaltă extremitate de grad minim. Să se determine numărul de muchii eliminate și să se afișeze matricea de adiacență a grafului parțial obținut.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;graf_partial_1IN.txt&amp;lt;/code&amp;gt; conţine pe prima linie numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, reprezentând numărul de vârfuri ale grafului. Fiecare dintre următoarele linii conține câte o pereche de numere &amp;lt;code&amp;gt;i j&amp;lt;/code&amp;gt;, cu semnificația că există muchie între &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieşire =&lt;br /&gt;
Fişierul de ieşire &amp;lt;code&amp;gt;graf_partial_1OUT.txt&amp;lt;/code&amp;gt; va conţine pe prime linie numărul de muchii eliminate, iar pe următoarele linii matricea de adiacență a grafului parțial obținut, câte o linie a matricei pe o linie a fișierului, elementele de pe fiecare linie fiind separate prin exact un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Restricţii şi precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ i , j ≤ n&amp;lt;/code&amp;gt;&lt;br /&gt;
* muchiile se pot repeta în fișierul de intrare&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
graf_partial_1IN.txt:&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
1 3&lt;br /&gt;
&lt;br /&gt;
2 3&lt;br /&gt;
&lt;br /&gt;
2 4&lt;br /&gt;
&lt;br /&gt;
4 3&lt;br /&gt;
&lt;br /&gt;
5 3&lt;br /&gt;
&lt;br /&gt;
4 5&lt;br /&gt;
&lt;br /&gt;
3 1&lt;br /&gt;
&lt;br /&gt;
6 4&lt;br /&gt;
&lt;br /&gt;
graf_partial_1OUT.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
0 0 0 0 0 0&lt;br /&gt;
&lt;br /&gt;
0 0 1 1 0 0&lt;br /&gt;
&lt;br /&gt;
0 1 0 1 1 0&lt;br /&gt;
&lt;br /&gt;
0 1 1 0 1 0&lt;br /&gt;
&lt;br /&gt;
0 0 1 1 0 0&lt;br /&gt;
&lt;br /&gt;
0 0 0 0 0 0&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
graf_partial_1IN.txt:&lt;br /&gt;
&lt;br /&gt;
999&lt;br /&gt;
&lt;br /&gt;
1 3&lt;br /&gt;
&lt;br /&gt;
2 3&lt;br /&gt;
&lt;br /&gt;
2 4&lt;br /&gt;
&lt;br /&gt;
4 3&lt;br /&gt;
&lt;br /&gt;
5 3&lt;br /&gt;
&lt;br /&gt;
4 5&lt;br /&gt;
&lt;br /&gt;
3 1&lt;br /&gt;
&lt;br /&gt;
6 4&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Restrictiile nu sunt indeplinite.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def check_input_restrictions(n, edges):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 100):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for edge in edges:&lt;br /&gt;
        i, j = edge&lt;br /&gt;
        if not (1 &amp;lt;= i &amp;lt;= n) or not (1 &amp;lt;= j &amp;lt;= n):&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def read_graph(filename):&lt;br /&gt;
    with open(filename, &#039;r&#039;) as file:&lt;br /&gt;
        n = int(file.readline())&lt;br /&gt;
        edges = [tuple(map(int, line.split())) for line in file.readlines()]&lt;br /&gt;
&lt;br /&gt;
    if not check_input_restrictions(n, edges):&lt;br /&gt;
        print(&amp;quot;Restrictiile nu sunt indeplinite.&amp;quot;)&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
    return n, edges&lt;br /&gt;
def read_graph(filename):&lt;br /&gt;
    with open(filename, &#039;r&#039;) as file:&lt;br /&gt;
        n = int(file.readline())&lt;br /&gt;
        edges = [tuple(map(int, line.split())) for line in file.readlines()]&lt;br /&gt;
    return n, edges&lt;br /&gt;
&lt;br /&gt;
def write_output(filename, result):&lt;br /&gt;
    with open(filename, &#039;w&#039;) as file:&lt;br /&gt;
        file.write(str(result[&#039;num_edges_removed&#039;]) + &#039;\n&#039;)&lt;br /&gt;
        for row in result[&#039;adjacency_matrix&#039;]:&lt;br /&gt;
            file.write(&#039; &#039;.join(map(str, row)) + &#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
def build_adjacency_matrix(n, edges):&lt;br /&gt;
    adjacency_matrix = [[0] * n for _ in range(n)]&lt;br /&gt;
    for edge in edges:&lt;br /&gt;
        i, j = edge&lt;br /&gt;
        adjacency_matrix[i-1][j-1] = adjacency_matrix[j-1][i-1] = 1&lt;br /&gt;
    return adjacency_matrix&lt;br /&gt;
&lt;br /&gt;
def calculate_degrees(adjacency_matrix):&lt;br /&gt;
    degrees = [sum(row) for row in adjacency_matrix]&lt;br /&gt;
    return degrees&lt;br /&gt;
&lt;br /&gt;
def eliminate_edges(adjacency_matrix, degrees):&lt;br /&gt;
    max_degree = max(degrees)&lt;br /&gt;
    min_degree = min(degrees)&lt;br /&gt;
&lt;br /&gt;
    max_degree_nodes = [i for i in range(len(degrees)) if degrees[i] == max_degree]&lt;br /&gt;
    min_degree_nodes = [i for i in range(len(degrees)) if degrees[i] == min_degree]&lt;br /&gt;
    &lt;br /&gt;
    edges_removed = 0&lt;br /&gt;
    for i in max_degree_nodes:&lt;br /&gt;
        for j in min_degree_nodes:&lt;br /&gt;
            if adjacency_matrix[i][j] == 1:&lt;br /&gt;
                adjacency_matrix[i][j] = adjacency_matrix[j][i] = 0&lt;br /&gt;
                edges_removed += 1&lt;br /&gt;
&lt;br /&gt;
    return edges_removed&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    input_filename = &amp;quot;graf_partial_1IN.txt&amp;quot;&lt;br /&gt;
    output_filename = &amp;quot;graf_partial_1OUT.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    graph_data = read_graph(input_filename)&lt;br /&gt;
&lt;br /&gt;
    if graph_data is not None:&lt;br /&gt;
        n, edges = graph_data&lt;br /&gt;
&lt;br /&gt;
        adjacency_matrix = build_adjacency_matrix(n, edges)&lt;br /&gt;
        degrees = calculate_degrees(adjacency_matrix)&lt;br /&gt;
&lt;br /&gt;
        num_edges_removed = eliminate_edges(adjacency_matrix, degrees)&lt;br /&gt;
&lt;br /&gt;
        result = {&lt;br /&gt;
            &#039;num_edges_removed&#039;: num_edges_removed,&lt;br /&gt;
            &#039;adjacency_matrix&#039;: adjacency_matrix&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        write_output(output_filename, result)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0431_-_Graf_Complet&amp;diff=8185</id>
		<title>0431 - Graf Complet</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0431_-_Graf_Complet&amp;diff=8185"/>
		<updated>2023-12-16T14:59:27Z</updated>

		<summary type="html">&lt;p&gt;Corjuc Eunice: Pagină nouă: = Cerinţa = Se dau mai multe grafuri neorientate, prin matricea de adiacență. Să se verifice despre fiecare graf dacă este complet.  = Date de intrare = Fişierul de intrare &amp;lt;code&amp;gt;graf_completIN.txt&amp;lt;/code&amp;gt; conţine pe prima linie numărul de grafuri &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt;. Pentru fiecare dintre cele &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt; grafuri se dă &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și apoi matricea de adiacență, formată din &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; coloane.  = Date de ieşire = Fişierul de ieşire...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerinţa =&lt;br /&gt;
Se dau mai multe grafuri neorientate, prin matricea de adiacență. Să se verifice despre fiecare graf dacă este complet.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;graf_completIN.txt&amp;lt;/code&amp;gt; conţine pe prima linie numărul de grafuri &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt;. Pentru fiecare dintre cele &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt; grafuri se dă &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și apoi matricea de adiacență, formată din &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; coloane.&lt;br /&gt;
&lt;br /&gt;
= Date de ieşire =&lt;br /&gt;
Fişierul de ieşire &amp;lt;code&amp;gt;graf_completOUT.txt&amp;lt;/code&amp;gt; va conţine &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt; linii. Pe fiecare dintre ele se va afla mesajul &amp;lt;code&amp;gt;DA&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;NU&amp;lt;/code&amp;gt;, după cum graful corespunzător este sau nu complet.&lt;br /&gt;
&lt;br /&gt;
= Restricţii şi precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ G ≤ 5&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 50&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
graf_completIN.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
0 1 1&lt;br /&gt;
&lt;br /&gt;
1 0 1&lt;br /&gt;
&lt;br /&gt;
1 1 0&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
0 1 1 1&lt;br /&gt;
&lt;br /&gt;
1 0 0 1&lt;br /&gt;
&lt;br /&gt;
1 0 0 1&lt;br /&gt;
&lt;br /&gt;
1 1 1 0&lt;br /&gt;
&lt;br /&gt;
graf_completOUT.txt:&lt;br /&gt;
&lt;br /&gt;
DA&lt;br /&gt;
&lt;br /&gt;
NU&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
graf_completIN.txt:&lt;br /&gt;
&lt;br /&gt;
99&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
0 1 1&lt;br /&gt;
&lt;br /&gt;
1 0 1&lt;br /&gt;
&lt;br /&gt;
1 1 0&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
0 1 1 1&lt;br /&gt;
&lt;br /&gt;
1 0 0 1&lt;br /&gt;
&lt;br /&gt;
1 0 0 1&lt;br /&gt;
&lt;br /&gt;
1 1 1 0&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Restrictii neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def este_graf_complet(matrice_adiacenta):&lt;br /&gt;
    n = len(matrice_adiacenta)&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if i != j and matrice_adiacenta[i][j] == 0:&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def verifica_restrictii(G, n):&lt;br /&gt;
    return 1 &amp;lt;= G &amp;lt;= 5 and 1 &amp;lt;= n &amp;lt;= 50&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;graf_completIN.txt&amp;quot;, &amp;quot;r&amp;quot;) as f_in, open(&amp;quot;graf_completOUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as f_out:&lt;br /&gt;
        G = int(f_in.readline().strip())&lt;br /&gt;
&lt;br /&gt;
        for _ in range(G):&lt;br /&gt;
            n = int(f_in.readline().strip())&lt;br /&gt;
            if not verifica_restrictii(G,n):&lt;br /&gt;
                print(&amp;quot;Restrictii neindeplinite&amp;quot;)&lt;br /&gt;
                return&lt;br /&gt;
            matrice_adiacenta = []&lt;br /&gt;
            for _ in range(n):&lt;br /&gt;
                linie = list(map(int, f_in.readline().split()))&lt;br /&gt;
                matrice_adiacenta.append(linie)&lt;br /&gt;
&lt;br /&gt;
            rezultat = &amp;quot;DA&amp;quot; if este_graf_complet(matrice_adiacenta) else &amp;quot;NU&amp;quot;&lt;br /&gt;
            f_out.write(rezultat + &amp;quot;\n&amp;quot;)&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>Corjuc Eunice</name></author>
	</entry>
</feed>