<?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=3394_-_Mere_1</id>
	<title>3394 - Mere 1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3394_-_Mere_1"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3394_-_Mere_1&amp;action=history"/>
	<updated>2026-05-01T08:25:19Z</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=3394_-_Mere_1&amp;diff=7949&amp;oldid=prev</id>
		<title>Zmicala Narcis: Pagină nouă: == Cerința == Scrieţi un program care să găsească numărul de mere culese de fiecare dintre cei &#039;&#039;&#039;K&#039;&#039;&#039; prieteni selectați de Cosmin. == Date de intrare == Fișierul de intrare &#039;&#039;&#039;merein.txt&#039;&#039;&#039; conține: - Pe prima linie, &#039;&#039;&#039;N T K&#039;&#039;&#039;, trei numere întregi reprezentând numărul de prieteni, numărul de zile în care se vor culege mere și numărul de întrebări ale lui Cosmin. - Pe următoarele &#039;&#039;&#039;T&#039;&#039;&#039; linii, câte două numere întregi, separate printr-un spațiu, &#039;&#039;&#039;...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3394_-_Mere_1&amp;diff=7949&amp;oldid=prev"/>
		<updated>2023-12-12T20:01:42Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerința == Scrieţi un program care să găsească numărul de mere culese de fiecare dintre cei &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; prieteni selectați de Cosmin. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;merein.txt&amp;#039;&amp;#039;&amp;#039; conține: - Pe prima linie, &amp;#039;&amp;#039;&amp;#039;N T K&amp;#039;&amp;#039;&amp;#039;, trei numere întregi reprezentând numărul de prieteni, numărul de zile în care se vor culege mere și numărul de întrebări ale lui Cosmin. - Pe următoarele &amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039; linii, câte două numere întregi, separate printr-un spațiu, &amp;#039;&amp;#039;&amp;#039;...&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;
Scrieţi un program care să găsească numărul de mere culese de fiecare dintre cei &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; prieteni selectați de Cosmin.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;merein.txt&amp;#039;&amp;#039;&amp;#039; conține:&lt;br /&gt;
- Pe prima linie, &amp;#039;&amp;#039;&amp;#039;N T K&amp;#039;&amp;#039;&amp;#039;, trei numere întregi reprezentând numărul de prieteni, numărul de zile în care se vor culege mere și numărul de întrebări ale lui Cosmin.&lt;br /&gt;
- Pe următoarele &amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039; linii, câte două numere întregi, separate printr-un spațiu, &amp;#039;&amp;#039;&amp;#039;Xi&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;Yi&amp;#039;&amp;#039;&amp;#039;, reprezentând indicele prietenul ce va intra primul în grădina, respectiv numărul de mere ce vor fi culese în ziua &amp;#039;&amp;#039;&amp;#039;Ti&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
- Pe ultima linie, &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; numere întregi, &amp;#039;&amp;#039;&amp;#039;Qi&amp;#039;&amp;#039;&amp;#039;, reprezentând indicii prietenilor lui Cosmin, pentru care se dorește aflarea numărului de mere culese.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;mereout.txt&amp;#039;&amp;#039;&amp;#039; va conţine &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; numere întregi, pe o singură linie, separate printr-un spațiu, reprezentând răspunsurile la cele &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; întrebări.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ Xi ≤ N ≤ 10.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ T ≤ 200.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ K ≤ 100.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ Yi ≤ 1.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Pentru teste în valoare de 30 puncte: &amp;#039;&amp;#039;&amp;#039;1 ≤ Xi ≤ N ≤ 100, 1 ≤ T ≤ 100, 1 ≤ K ≤ 100, 1 ≤ Yi ≤ 1.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Pentru teste în valoare de 50 puncte: &amp;#039;&amp;#039;&amp;#039;1 ≤ Xi ≤ N ≤ 200.000, 1 ≤ T ≤ 10.000, 1 ≤ K ≤ 10.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Pentru teste în valoare de 70 puncte: &amp;#039;&amp;#039;&amp;#039;1 ≤ Xi ≤ N ≤ 1.000.000, 1 ≤ T ≤ 100.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; merein.txt&lt;br /&gt;
: 5 3 4&lt;br /&gt;
: 1 2&lt;br /&gt;
: 3 5&lt;br /&gt;
: 2 7&lt;br /&gt;
: 2 4 1 2&lt;br /&gt;
; mereout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 4 2 3 4&lt;br /&gt;
== Explicație ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5&amp;#039;&amp;#039;&amp;#039; persoane vor culege mere timp de &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; zile, astfel:&lt;br /&gt;
În prima zi, vor culege &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; mere persoanele cu indicii &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
În a doua zi, vor culege &amp;#039;&amp;#039;&amp;#039;5&amp;#039;&amp;#039;&amp;#039; mere persoanele cu indicii &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;5&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
În a treia zi, vor culege &amp;#039;&amp;#039;&amp;#039;7&amp;#039;&amp;#039;&amp;#039; mere persoanele cu indicii &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;5&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
Așadar, numărul de mere culese de fiecare persoană de la &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; la &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; este: &amp;#039;&amp;#039;&amp;#039;1 -&amp;gt; 3&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;2 -&amp;gt; 4&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;3 -&amp;gt; 3&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;4 -&amp;gt; 2&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;5 -&amp;gt; 2&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; merein.txt&lt;br /&gt;
: 6 3 4&lt;br /&gt;
: 1 2&lt;br /&gt;
: 3 5&lt;br /&gt;
: 2 7&lt;br /&gt;
: 2 4 1 7&lt;br /&gt;
; mereout.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;
# 3394 - Mere 1&lt;br /&gt;
def validare(n_validare, t_validare, k_validare, zile_validare, intrebari_validare, fisier):&lt;br /&gt;
    # Verificam daca datele de intrare respecta restrictiile impuse&lt;br /&gt;
    if (n_validare &amp;lt; 1 or n_validare &amp;gt; 10000000 or t_validare &amp;lt; 1 or t_validare &amp;gt; 200000 or&lt;br /&gt;
            k_validare &amp;lt; 1 or k_validare &amp;gt; 100000):&lt;br /&gt;
        raise ValueError&lt;br /&gt;
    for zi in zile_validare:&lt;br /&gt;
        if zi[0] &amp;lt; 1 or zi[0] &amp;gt; n_validare or zi[1] &amp;lt; 1 or zi[1] &amp;gt; 1000000:&lt;br /&gt;
            raise ValueError&lt;br /&gt;
    for intrebare in intrebari_validare:&lt;br /&gt;
        if intrebare &amp;lt; 1 or intrebare &amp;gt; n_validare:&lt;br /&gt;
            raise ValueError&lt;br /&gt;
    # Daca datele de intrare sunt valide, afisam un mesaj corespunzator&lt;br /&gt;
    fisier.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def mere_culese(n_culese, zile_culese, intrebari_culese, fisier):&lt;br /&gt;
    # Initializam un vector de zero-uri de lungimea numarului de prieteni plus unu&lt;br /&gt;
    mere = [0] * (n_culese + 1)&lt;br /&gt;
    # Parcurgem fiecare zi&lt;br /&gt;
    for zi in zile_culese:&lt;br /&gt;
        # Stabilim indicele prietenului care incepe culesul&lt;br /&gt;
        idx = zi[0]&lt;br /&gt;
        # Parcurgem numarul de mere culese in ziua respectiva&lt;br /&gt;
        for _ in range(zi[1]):&lt;br /&gt;
            # Adaugam un mar la prietenul cu indicele idx&lt;br /&gt;
            mere[idx] += 1&lt;br /&gt;
            idx += 1&lt;br /&gt;
            if idx &amp;gt; n_culese:&lt;br /&gt;
                idx = 1&lt;br /&gt;
    for intrebare in intrebari_culese:&lt;br /&gt;
        fisier.write(str(mere[intrebare]) + &amp;quot; &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    fisier_intrare = open(&amp;quot;merein.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    with open(&amp;quot;mereout.txt&amp;quot;, &amp;quot;w&amp;quot;) as fisier_iesire:&lt;br /&gt;
        try:&lt;br /&gt;
            # Citim datele de intrare&lt;br /&gt;
            n, t, k = map(int, fisier_intrare.readline().split())&lt;br /&gt;
            zile = [list(map(int, fisier_intrare.readline().split())) for _ in range(t)]&lt;br /&gt;
            intrebari = list(map(int, fisier_intrare.readline().split()))&lt;br /&gt;
            # Validam datele de intrare&lt;br /&gt;
            validare(n, t, k, zile, intrebari, fisier_iesire)&lt;br /&gt;
            # Rezolvam problema&lt;br /&gt;
            mere_culese(n, zile, intrebari, fisier_iesire)&lt;br /&gt;
        # Tratam eventualele erori&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;
        except IndexError:&lt;br /&gt;
            fisier_iesire.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    fisier_intrare.close()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zmicala Narcis</name></author>
	</entry>
</feed>