agitatie

Time limit: 0.05s Memory limit: 16MB Input: agitatie.in Output: agitatie.out

O firmă producătoare de software organizează un interviu pentru ocuparea unui post de programator, la care s-au prezentat NN candidaţi. Aceştia sunt ordonaţi în funcţie de momentul la care şi-au trimis CV-ul şi numerotaţi cu numere consecutive de la 11 la NN. Fiecărui candidat i-a fost realizat în prealabil un profil psihologic şi i s-a determinat nivelul de agitaţie provocat de interviul care urmează să aibă loc, precum şi un sens (crescător sau descrescător) de modificare a acestui nivel. Astfel, la ora la care s-a anunţat începerea interviului (pe care o vom considera momentul 00), fiecare candidat are un nivel de agitaţie iniţial.

Pentru fiecare unitate de timp după momentul 00 şi până în momentul în care candidatul este invitat pentru interviu (până atunci el trebuind să aştepte), nivelul său de agitaţie se modifică cu 11: pentru o parte din candidaţi nivelul creşte cu 11 unitate, iar pentru ceilalţi nivelul scade cu 11 unitate. Dacă nivelul de agitaţie a unui candidat ajunge la 00, din acel moment, pentru fiecare unitate de timp următoare, nivelul de agitaţie va creşte cu 11 (se schimbă sensul de modificare a nivelului de agitaţie).

Firma va invita candidaţii la interviu în grupuri, în ordinea numerotării (toţi candidaţii având numere de ordine mai mici decât un candidat KK vor fi invitaţi într-un grup anterior sau în acelaşi grup cu candidatul KK).

Înainte de a invita un grup, comisia ce conduce interviul poate decide să aştepte un număr întreg de unităţi de timp (zero sau mai multe). Pentru un grup, durata interviului se consideră neglijabilă (fiecare candidat trebuie doar să răspundă la câteva întrebări de tip grilă). Din momentul în care un candidat este invitat la interviu, nivelul de agitaţie a acestuia rămâne constant. Deoarece firma doreşte ca, indiferent de rezultatul interviului, toţi candidaţii să rămână cu o părere bună, comisia va forma grupurile şi va alege timpii de aşteptare în aşa fel încât suma totală a nivelelor de agitaţie a candidaţilor la sfârşitul interviului să fie minimă.

Cerință

Să se scrie un program care să determine suma totală minimă a nivelelor de agitaţie a candidaţilor la sfârşitul interviului.

Date de intrare

Fişierul de intrare agitatie.in are pe prima linie numărul natural NN, reprezentând numărul de candidaţi. Pe următoarele N linii se află câte două numere întregi AA şi BB, separate printr-un spaţiu. AA reprezintă nivelul iniţial de agitaţie a candidatului, iar BB reprezintă sensul de modificare a agitaţiei pentru fiecare unitate de timp în care acesta aşteaptă (dacă BB este 11, atunci nivelul de agitaţie creşte, iar dacă BB este 1-1, nivelul de agitaţie scade). Linia k+1k+1 din fişier va conţine valorile corespunzătoare candidatului cu numărul kk.

Date de ieșire

Fişierul de ieşire agitatie.out va conţine pe prima (şi singura) linie suma totală minimă a nivelelor de agitaţie a candidaţilor la sfârşitul interviului.

Restricții și precizări

  • 1N3 0001 \leq N \leq 3 \ 000
  • 11 \leq nivelul iniţial de agitaţie a fiecărui candidat 3 000\leq 3 \ 000

Exemplu

agitatie.in

6
10 1
3 -1
2 -1
1 -1
9 1
6 -1

agitatie.out

23

Explicație

Suma totală minimă este 2323. O posibilă soluţie este următoarea: Se formează 33 grupuri.

Primul grup este format doar din candidatul 11 şi aşteaptă 00 unităţi de timp. Prin urmare, nivelul final de agitaţie a candidatului 11 va fi 1010.

Al doilea grup va aştepta 22 unităţi de timp din momentul în care a terminat interviul primul grup (deci va începe interviul la momentul 22), iar din grup vor face parte candidaţii 2,3,42, 3, 4 şi 55. Nivelele finale de agitaţie a acestor candidaţi vor fi: 1,0,11, 0, 1 şi 1111.

Observaţi că nivelul de agitaţie a candidatului 44 a scăzut întâi până la 00 apoi a crescut la 11. Al 33-lea grup va mai aştepta 44 unităţi de timp (deci va începe interviul la momentul 66), iar din grup va face parte doar candidatul 66. Nivelul final de agitaţie a acestuia va fi 00.

Log in or sign up to be able to send submissions!