<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3883_-_Comisia</id>
	<title>3883 - Comisia - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3883_-_Comisia"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3883_-_Comisia&amp;action=history"/>
	<updated>2026-05-01T08:23:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3883_-_Comisia&amp;diff=8783&amp;oldid=prev</id>
		<title>Zmicala Narcis: Pagină nouă: == Cerința == Odată cu primăvara a sosit şi recrutarea comisiilor, iar asemenea ghioceilor, abuzurile răsar pretutindeni pentru a prevesti acest fapt. Astăzi dorim să recrutăm o comisie dintr-un şir de &#039;&#039;&#039;N&#039;&#039;&#039; oameni găsiţi aleator pe stradă în timp ce stăteau la o coadă. Fiecare dintre cei &#039;&#039;&#039;N&#039;&#039;&#039; oameni are un număr minim de oameni pe care comisia trebuie să-l întrunească pentru ca persoana respectivă să accepte participarea. De-asemenea, am atribuit fi...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3883_-_Comisia&amp;diff=8783&amp;oldid=prev"/>
		<updated>2024-01-02T18:42:11Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerința == Odată cu primăvara a sosit şi recrutarea comisiilor, iar asemenea ghioceilor, abuzurile răsar pretutindeni pentru a prevesti acest fapt. Astăzi dorim să recrutăm o comisie dintr-un şir de &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; oameni găsiţi aleator pe stradă în timp ce stăteau la o coadă. Fiecare dintre cei &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; oameni are un număr minim de oameni pe care comisia trebuie să-l întrunească pentru ca persoana respectivă să accepte participarea. De-asemenea, am atribuit fi...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Cerința ==&lt;br /&gt;
Odată cu primăvara a sosit şi recrutarea comisiilor, iar asemenea ghioceilor, abuzurile răsar pretutindeni pentru a prevesti acest fapt.&lt;br /&gt;
Astăzi dorim să recrutăm o comisie dintr-un şir de &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; oameni găsiţi aleator pe stradă în timp ce stăteau la o coadă. Fiecare dintre cei &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; oameni are un număr minim de oameni pe care comisia trebuie să-l întrunească pentru ca persoana respectivă să accepte participarea. De-asemenea, am atribuit fiecărei persoane, într-un mod subiectiv şi profund discriminatoriu, un grad de risc. Cu cât acest grad de risc este mai mare, cu atât mai mult rău poate face persoana respectivă comisiei, fie că este vorba de încălcat confidenţialitatea subiectelor, sustragerea echipamentului tehnic sau agresarea verbală sau/şi fizică a altor membri ai comisiei.&lt;br /&gt;
Fiindcă persoanele au fost găsite stând la coadă şi oricum nu voiam să ne agităm să-i ordonăm în vreun fel, este necesar ca întreaga comisie să formeze o subsecvenţă continuă a cozii. Ştiind acest lucru, dorim să găsim o comisie validă de risc total minim.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &amp;#039;&amp;#039;&amp;#039;comisiain.txt&amp;#039;&amp;#039;&amp;#039; contine pe prima linie numarul &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; reprezentand numarul de persoane.&lt;br /&gt;
Pe a doua linie se va afla şirul &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039;, adică &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere reprezentand cerintele fiecarei persoane. Mai exact, dacă a i-a valoare este egală cu &amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;, persoana cu numărul &amp;#039;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;#039; din coadă îşi doreşte cel puţin &amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039; membri în comisie.&lt;br /&gt;
Pe a treia linie se va afla şirul &amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;, adică &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere reprezentand factorul de risc al fiecarei persoane.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
În fişierul de ieşire &amp;#039;&amp;#039;&amp;#039;comisiaout.txt&amp;#039;&amp;#039;&amp;#039; se va afla o singură valoare, reprezentând riscul total minim al unei comisii care întruneşte cerinţele persoanelor implicate.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;3 ≤ N ≤ 200.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ Ai ≤ N&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ Bi ≤ 1.000.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Pentru teste in valoare de &amp;#039;&amp;#039;&amp;#039;20&amp;#039;&amp;#039;&amp;#039; de puncte &amp;#039;&amp;#039;&amp;#039;N ≤ 4.000&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; comisiain.txt&lt;br /&gt;
: 3&lt;br /&gt;
: 1 2 2&lt;br /&gt;
: 50 6 6&lt;br /&gt;
; comisiaout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 12&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Prima persoană este dispusă să fie singurul membru al comisiei, dar aceasta avea, fără vreun motiv aparent, un topor în mână în momentul chestionării, motiv pentru care i s-a atribuit gradul de risc &amp;#039;&amp;#039;&amp;#039;50&amp;#039;&amp;#039;&amp;#039;. Este astfel mai bine să formăm comisia din persoanele &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; comisiain.txt&lt;br /&gt;
: 2&lt;br /&gt;
: 1 2 3 4&lt;br /&gt;
: 5 6 7 8&lt;br /&gt;
: 9 10 11 12&lt;br /&gt;
: 13 14 15 1000000001&lt;br /&gt;
; comisiaout.txt&lt;br /&gt;
: Datele introduse nu corespund restricțiilor impuse.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# 3883 - Comisia&lt;br /&gt;
def validare(n1, lista_cerinte1, lista_riscuri1):           # functia de validare a datelor de intrare&lt;br /&gt;
    if n1 &amp;lt; 3 or n1 &amp;gt; 200000:&lt;br /&gt;
        raise ValueError&lt;br /&gt;
&lt;br /&gt;
    for cerinta in lista_cerinte1:&lt;br /&gt;
        if cerinta &amp;lt; 1 or cerinta &amp;gt; n1:&lt;br /&gt;
            raise ValueError&lt;br /&gt;
&lt;br /&gt;
    for risc in lista_riscuri1:&lt;br /&gt;
        if risc &amp;lt; 1 or risc &amp;gt; 1000000000:&lt;br /&gt;
            raise ValueError&lt;br /&gt;
&lt;br /&gt;
    fisier_iesire.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def risc_minim(n1, lista_cerinte1, lista_riscuri1):                     # functia de rezolvare&lt;br /&gt;
    dp = [float(&amp;#039;inf&amp;#039;)] * (n1 + 1)&lt;br /&gt;
    dp[0] = 0&lt;br /&gt;
    for i in range(1, n1 + 1):&lt;br /&gt;
        suma = 0&lt;br /&gt;
        for j in range(i, 0, -1):&lt;br /&gt;
            suma += lista_riscuri1[j - 1]&lt;br /&gt;
            if lista_cerinte1[j - 1] &amp;lt;= i:&lt;br /&gt;
                dp[i] = min(dp[i], dp[j-1] + suma)&lt;br /&gt;
&lt;br /&gt;
    fisier_iesire.write(str(min(dp[1:])))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    fisier_intrare = open(&amp;quot;comisiain.txt&amp;quot;, &amp;quot;r&amp;quot;)         # declararea fisierelor&lt;br /&gt;
    fisier_iesire = open(&amp;quot;comisiaout.txt&amp;quot;, &amp;quot;w&amp;quot;)       # fisierul out trebuie declarat cu optiunea &amp;quot;w&amp;quot; (write)&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        dim_n = int(fisier_intrare.readline())&lt;br /&gt;
        lista_cerinte = list(map(int, fisier_intrare.readline().split()))&lt;br /&gt;
        lista_riscuri = list(map(int, fisier_intrare.readline().split()))&lt;br /&gt;
&lt;br /&gt;
        validare(dim_n, lista_cerinte, lista_riscuri)                 # apelul functiei de validare&lt;br /&gt;
        risc_minim(dim_n, lista_cerinte, lista_riscuri)               # apelul functiei de rezolvare&lt;br /&gt;
&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        fisier_iesire.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zmicala Narcis</name></author>
	</entry>
</feed>