Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | siui.in, siui.out | Sursă | ad-hoc |
Autor | Adăugată de | ||
Timp execuţie pe test | 0.1 sec | Limită de memorie | 8096 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Siui
În sistemul informatic unic integrat al asigurărilor de sănătate, recent implementat, cererile de acces de la medici sunt prelucrate de n servere conectate într-o reţea de tip magistrală. Fiecare cerere este atribuită aleatoriu unui server, astfel încât unele dintre servere sunt supraîncărcate în timp ce altele stau. Trebuie deci să se redistribuie cererile de acces astfel incât sistemul să fie echilibrat. Echilibrarea are loc în reprize, la fiecare repriză fiecare server din sistem poate să cedeze sau să primească o cerere de acces de la vecinii săi direcţi de exemplu serverul i are ca vecini serverul i-1 şi serverul i+1, excepţie serverul 1 care îl are vecin doar pe 2 şi serverul n care îl are vecin doar pe serverul n-1. Scopul echilibrării este să se atribuie fiecărui server exact acelaşi număr de cereri de acces. Având date numărul de severe şi numărul de cereri de acces asociate iniţial fiecărui server se cere să se afişeze numărul minim de reprize în care se echilibrează sistemul, dacă este posibil.
Date de intrare
Fişierul de intrare siui.in conţine pe prima linie valoarea lui n reprezentând numărul de servere, iar pe linia a doua numărul de cereri asociate iniţial fiecărui server.
Date de ieşire
În fişierul de ieşire siui.out se scrie numărul minim de reprize de schimb reciproc între servere necesare pentru echilibrarea sistemului, dacă acest lucru este posibil şi -1 dacă echilibrarea nu este posibilă.
Restricţii
- 0<n<=10000;
- Numărul de cereri asociat iniţial fiecărui server p[i]<=9999;
- Memorie disponibilă 60 Kbytes;
- Timp de execuţie 0,03 secunde/test;
Exemplu
siui.in | siui.out |
---|---|
5 0 1 6 1 2 | 3 |
Explicaţie
Prima repriză
1 1 4 2 2
Serverul 2 cedează serverului 1 o cerere şi primeşte de la serverul 3 o cerere, serverul 3 cedează şi serverului 4 o cerere şi serverului 2 o cerere iar serverul 4 primeşte de la serverul 3 o cerere.
A doua repriză
2 1 3 2 2
A treia repriză
2 2 2 2 2