Mai intai trebuie sa te autentifici.
Diferente pentru problema/galeti intre reviziile #2 si #14
Diferente intre titluri:
galeti
Găleti
Diferente intre continut:
== include(page="template/taskheader" task_id="galeti") ==
Dorel are N găleţi numerotate de la 1 la N,fiecare găleata areocapacitate Cîn litri. Dorelare unfurtunlegatlaosursăinfinitădeapăşi doreştesăumpletoategăleţile.Dorelînsă,vreasătoarneacceaşicantitate deapăîn toategăleţileşiişi doreştesăumpletoategăleţileturnândaceeaşi cantitateminimă întoate.
Dorel are $N$ găleţi numerotate de la 1 la $N$. Găleata $i$ are capacitatea $C{~i~}$ (capacităţile sunt numere naturale). O ordine de exces este o permutare $P$ de lungime $N$ ce are următoarea semnificaţie: dacă găleata P{~i~} se umple, excesul se varsă în găleata $P{~i+1~}$. Excesul din găleata $P{~N~}$ nu se varsă în nicio găleată.
Pentruaface acestlucru, ela stabilitoordinedeexces,ordinea de excesînseamnacă dacă o găleata s-aumplutşi încamaiesteapădeturnat înea,restul de apăvafi turnată în găleata următoarespecificatăîn ordine.De exemplu, dacăordineaeste1 -> 3 -> 2 -> 4,asta înseamnăcădacăgăleata1 se umple,restulsetoarnăîn găleata 3, dacă şigăleata 3 seumple, restulsetoarna în găleata2,dacă şigăleata2se umple,restulsetoarna îngăleata4, excesuldin găleata 4estefolosit pentrua uda florile,adică nune intereseaza.
Iniţial, găleţile lui Dorel au ordinea de exces $Q$. Pentru aceasta, el vrea să afle cantitatea minimă de apă $X{~Q~}$ pe care să o toarne pe rând în găleţi (acesta toarnă apă în găleţi în ordinea $1, 2, … N$ ) aşa încât la final găleţile să fie pline cu apă.
Înafarăde ordineade exces,Dorelva turnaapăîn găleţi în ordinea 1, 2,...N
Apoi, Dorel vrea să găsească o ordine de exces $R$, pentru care cantitatea de apă $X{~R~}$ turnată pe rând în găleţi (în ordinea $1, 2, … N$ ) să fie minimă.
h2. Cerinţă
Stiind N, numărul de găleţi, capacitatea fiecarei găleţişi ordineade exces a găleţilor, aflaţi cantitatea minima de apă, înlitri,necesarăpentru a fi umplutetoate găleţile.Determinaţioordine de vărsare maibuna astfelîncât să minimalizaţi cantitateaminima deapă necesară pentru a umple toate găleţile şi afisaţinouacantitate.Se garanteaza ca nu vor exista cicluri în ordinea de exces.
Ajutaţi-l pe Dorel să resolve problema descrisă mai sus.
h2. Date de intrare
Prima linie a fişierului $galeti.in&va conţine numărul N cu semnificaţia din enunţ. A 2-a linie conţine N numerecereprezinta ordinea de exces. A 3-a linie conţine N numere,ali-leanumărreprezintacapacitateapentrugăleatacu numărul i.
Prima linie a fişierului $galeti.în$ va conţine numărul $N$ cu semnificaţia din enunţ.
A 2-a linie conţine $N$ numere $Q{~1~}, Q{~2~}, … Q{~N~}$ separate printr-un spaţiu ce descriu ordinea iniţială de exces $Q$.
A 3-a linie conţine $N$ numere $C{~1~}, C{~2~}, … C{~N~}$ separate printr-un spaţiu ce descriu capacităţile găleţilor.
h2. Date de ieşire
În fişierul $galeti.out$ afişaţi pe prima linie cantitatea necesară pentru a umple toate găleţile. Pe a 2-a linie afişaţi noua ordine de exces, dacă există mai multe, afişaţi pe oricare dintre ele. Pe a 3-a linie afişaţi noua cantitate minimă necesară pentru a umple toate găleţile.
În fişierul $galeti.out$ afişaţi pe prima linie cantitatea de apă XQ cu semnificaţia din enunţ.
Pe a 2-a linie afişaţi $N$ numere $R{~1~}, R{~2~}, … R{~N~}$ ce descriu ordinea de exces R pentru care se obţine XR minim.
Pe a 3-a linie afişaţi $X{~R~}$ cu semnificaţia din enunţ.
h2. Restricţii
* 1 ≤ N ≤ 10 ^5^ * 1 ≤ C ≤ 10 ^9^ * pentru 30% din punctaj: 1 ≤ N ≤ 600, 1 ≤ C ≤ 10000 * pentru 50% din punctaj 1 ≤ N ≤ 1000
* $1 ≤ N ≤ 10^5^$
* $1 ≤ C{~i~} ≤ 10^9^$ pentru orice $i$ de la $1$ la $N$
* pentru $30%$ din punctaj: $1 ≤ N ≤ 600$, $1 ≤ C{~i~} ≤ 10000$ pentru orice $i$ de la $1$ la $N$
* pentru $50%$ din punctaj $1 ≤ N ≤ 1000$
* Atât $X{~Q~}$ cât şi $X{~R~}$ trebuie să fie numere naturale.
* Orice ordine de acces $R$ pentru care se obţine $X{~R~}$ minim este acceptată.
h2. Exemplu table(example). |_. galeti.in |_. galeti.out | | 4 1 2 3 4
4 242
4 2 3 2
| 4 2 3 4 1 3
h3. Explicaţie
Cu ordinea iniţiala de exces, valoarea minimă cerută este 4. Cu noua ordine de exces, excesul de 1 litru din găleata 2 se va turna în găleata 3 şi se va umble, excesul de 1 litru din găleata 4 se va turna în găleata 1 şi se va umple, raspuns final 3. O altă nouă ordine de exces validă putea fi: 2 4 1 3
Cu ordinea iniţiala de exces, valoarea minimă cerută este 4, iar cantităţile din găleţi după fiecare turnare sunt următoarele: 4 0 0 0 4 2 2 0 4 2 3 2 4 2 3 2 Cu noua ordine de exces valoarea minimă cerută este 3, iar cantităţile din găleţi după fiecare turnare sunt următoarele: 3 0 0 0 3 2 1 0 3 2 3 1 4 2 3 2 Nu există o ordine de acces prin care să se umple găleţile turnând pe rând mai puţin de 3 litri.
== include(page="template/taskfooter" task_id="galeti") ==
