<?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=3436_-_Wind</id>
	<title>3436 - Wind - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3436_-_Wind"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3436_-_Wind&amp;action=history"/>
	<updated>2026-05-01T04:38: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=3436_-_Wind&amp;diff=9997&amp;oldid=prev</id>
		<title>AjM: Pagină nouă: == Enunt == Domnul Vânt a pus pe marginea unei șosele N centrale eoliene, dintre care unele produc energie electrică, iar altele, deocamdată, doar consumă energie. El a etichetat centralele cu numerele naturale distincte de la 1 la N, în ordinea poziționării lor pe șosea. Fiecare centrală eoliană are la bază un ecran pe care este afișat un număr întreg, reprezentând cantitatea de energie pe care o produce (dacă numărul este pozitiv) sau pe care o consumă (d...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3436_-_Wind&amp;diff=9997&amp;oldid=prev"/>
		<updated>2024-06-03T16:26:06Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunt == Domnul Vânt a pus pe marginea unei șosele N centrale eoliene, dintre care unele produc energie electrică, iar altele, deocamdată, doar consumă energie. El a etichetat centralele cu numerele naturale distincte de la 1 la N, în ordinea poziționării lor pe șosea. Fiecare centrală eoliană are la bază un ecran pe care este afișat un număr întreg, reprezentând cantitatea de energie pe care o produce (dacă numărul este pozitiv) sau pe care o consumă (d...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunt ==&lt;br /&gt;
Domnul Vânt a pus pe marginea unei șosele N centrale eoliene, dintre care unele produc energie electrică, iar altele, deocamdată, doar consumă energie. El a etichetat centralele cu numerele naturale distincte de la 1 la N, în ordinea poziționării lor pe șosea. Fiecare centrală eoliană are la bază un ecran pe care este afișat un număr întreg, reprezentând cantitatea de energie pe care o produce (dacă numărul este pozitiv) sau pe care o consumă (dacă numărul este negativ).&lt;br /&gt;
&lt;br /&gt;
Pentru a construi corect k orașe de-a lungul acestei șosele, un arhitect trebuie să aibă în vedere că:&lt;br /&gt;
&lt;br /&gt;
* fiecărui oraș îi va fi atribuit câte un grup format din centrale eoliene vecine pe șosea, toate grupurile având același număr de centrale;&lt;br /&gt;
* cantitatea de energie repartizată unui oraș este egală cu suma numerelor afișate pe ecranele centralelor&lt;br /&gt;
eoliene din grupul atribuit; uneori este posibil ca, deocamdată, suma obținută să fie negativă;&lt;br /&gt;
* fiecare dintre cele N centrale eoliene trebuie să fie atribuită unui oraș;&lt;br /&gt;
* factorul de dezechilibru, notat cu P(k), este valoarea maximă a diferenței dintre energiile repartizate oricăror două orașe diferite, dintre cele k.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Scrieți un program care citește numărul N, valorile afișate pe cele N ecrane ale centralelor eoliene și rezolvă următoarele două cerinţe:&lt;br /&gt;
&lt;br /&gt;
* afișează numărul M de moduri în care se pot grupa cele N centrale pentru construcția corectă de orașe;&lt;br /&gt;
* afișează numărul maxim X de orașe ce pot fi construite corect, dintre cele care au factorul de dezechilibru minim, precum și eticheta E a primei centrale eoliene atribuită orașului cu cea mai mare cantitate de energie repartizată, dintre cele X orașe; dacă sunt mai multe astfel de orașe, se ia în considerare cel care are atribuite centrale etichetate cu numere mai mari.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare wind.in conține pe prima linie un număr natural C reprezentând cerința care trebuie rezolvată (1 sau 2). A doua linie a fișierului conține un număr natural N, cu semnificația din enunț. A treia linie din fișier conține N numere întregi, separate prin câte un spațiu, reprezentând valorile afișate pe cele N ecrane ale centralelor eoliene, în ordinea poziționării acestora pe șosea.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire wind.out va conține pe prima linie:&lt;br /&gt;
&lt;br /&gt;
* dacă C=1, numărul natural M, reprezentând răspunsul la cerința 1;&lt;br /&gt;
* dacă C=2, cele două numere naturale X și E, în această ordine, separate printr-un singur spațiu,&lt;br /&gt;
reprezentând răspunsul la cerința 2.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 2 ≤ N ≤ 100000, N număr natural;&lt;br /&gt;
* Numerele afișate pe ecranele centralelor sunt numere întregi formate din cel mult nouă cifre;&lt;br /&gt;
* Se vor construi minimum 2 orașe;&lt;br /&gt;
* În concurs, pentru rezolvarea cerinței 1 s-au acordat 20 de puncte, pentru rezolvarea cerinței 2 s-au acordat 70 de puncte. Pe site se acordă 10 puncte pentru exemple.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; wind.in&lt;br /&gt;
 1&lt;br /&gt;
 12&lt;br /&gt;
 2 4 -5 12 3 5 -6 4 5 7 -8 2&lt;br /&gt;
; wind.out&lt;br /&gt;
 5&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Cerința este 1. Centralele eoliene se pot grupa câte 1, câte 2, câte 3, câte 4 sau câte 6.&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; wind.in&lt;br /&gt;
 2&lt;br /&gt;
 12&lt;br /&gt;
 2 4 -5 12 3 5 -6 4 5 7 -8 2&lt;br /&gt;
; wind.out&lt;br /&gt;
 3 1&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Cerința este 2. Posibilitățile de grupare:&lt;br /&gt;
&lt;br /&gt;
* câte 1 centrală/oraș (sumele sunt 2, 4, -5, …, 2; P(12)=20=12-(-8));&lt;br /&gt;
* câte 2 centrale/oraș (sumele sunt: 6, 7, 8, -2, 12, -6; P(6)=18=12-(-6));&lt;br /&gt;
* câte 3 centrale/oraș (sumele sunt: 1, 20, 3, 1; P(4)=19=20-1);&lt;br /&gt;
* câte 4 centrale/oraș (sumele sunt: 13, 6, 6; P(3)=7=13-6);&lt;br /&gt;
* câte 6 centrale/oraș (sumele sunt: 21 si 4; P(2)=17=21-4).&lt;br /&gt;
Astfel, factorul de dezechilibru minim este P(3)=7, deci X=3. Pentru această grupare a centralelor, orașul cu cantitatea maximă de energie (13) corespunde primului grup, care începe cu centrala etichetată cu E=1.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def calculate_divisors(n):&lt;br /&gt;
    divisors = []&lt;br /&gt;
    for i in range(1, int(n**0.5) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            divisors.append(i)&lt;br /&gt;
            if i != n // i:&lt;br /&gt;
                divisors.append(n // i)&lt;br /&gt;
    return divisors&lt;br /&gt;
&lt;br /&gt;
def imbalance_factor(groups):&lt;br /&gt;
    max_energy = max(sum(group) for group in groups)&lt;br /&gt;
    min_energy = min(sum(group) for group in groups)&lt;br /&gt;
    return max_energy - min_energy&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    task = int(input())&lt;br /&gt;
    N = int(input())&lt;br /&gt;
    energies = list(map(int, input().split()))&lt;br /&gt;
&lt;br /&gt;
    if task == 1:&lt;br /&gt;
        divisors = calculate_divisors(N)&lt;br /&gt;
        print(len(divisors))&lt;br /&gt;
    elif task == 2:&lt;br /&gt;
        divisors = calculate_divisors(N)&lt;br /&gt;
        min_imbalance = float(&amp;#039;inf&amp;#039;)&lt;br /&gt;
        max_cities = 0&lt;br /&gt;
        best_start = 0&lt;br /&gt;
&lt;br /&gt;
        for divisor in divisors:&lt;br /&gt;
            groups = [energies[i:i + divisor] for i in range(0, N, divisor)]&lt;br /&gt;
            imbalance = imbalance_factor(groups)&lt;br /&gt;
            if imbalance &amp;lt; min_imbalance:&lt;br /&gt;
                min_imbalance = imbalance&lt;br /&gt;
                max_cities = len(groups)&lt;br /&gt;
                best_start = sum(groups[0])&lt;br /&gt;
&lt;br /&gt;
        print(max_cities, best_start)&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>AjM</name></author>
	</entry>
</feed>