<?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=3747_-_Bile_4</id>
	<title>3747 - Bile 4 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3747_-_Bile_4"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3747_-_Bile_4&amp;action=history"/>
	<updated>2026-05-01T06:37:53Z</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=3747_-_Bile_4&amp;diff=8949&amp;oldid=prev</id>
		<title>Corjuc Eunice: Pagină nouă: = Enunț = Presupunem că avem două cutii notate &lt;code&gt;A&lt;/code&gt; și &lt;code&gt;B&lt;/code&gt;. Cutia &lt;code&gt;A&lt;/code&gt; conține &lt;code&gt;N&lt;/code&gt; bile numerotate cu numerele naturale distincte: &lt;code&gt;0&lt;/code&gt;, &lt;code&gt;1&lt;/code&gt;, &lt;code&gt;2&lt;/code&gt;, . . . , &lt;code&gt;N − 1&lt;/code&gt;. Cutia &lt;code&gt;B&lt;/code&gt; este goală.  Spunem că o bilă dintr-o cutie este &lt;code&gt;bila specială&lt;/code&gt; a acestei cutii dacă numărul &lt;code&gt;X&lt;/code&gt; cu care este numerotată această bilă este egal cu media aritmetică a nume...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3747_-_Bile_4&amp;diff=8949&amp;oldid=prev"/>
		<updated>2024-01-04T01:42:37Z</updated>

		<summary type="html">&lt;p&gt;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;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&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)) + &amp;#039;\n&amp;#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) + &amp;#039;\n&amp;#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>
</feed>