purification

Time limit: 0.05s Memory limit: 256MB Input: purification.in Output: purification.out

După ce a cucerit Tarsonis, Tassadar a trecut la purificarea planetei Zerus. Această planetă este infestată şi are NN cuiburi zerg. Cuiburile sunt numerotate de la 00 la N1N - 1 şi, în fiecare oră, cuibul ii produce WiW_i zerglingi. Iniţial, pe planetă nu exista niciun zergling.

Un cuib este fie autonom, fie susţinut vital de un alt cuib. Dacă un cuib autonom este distrus, atunci producţia de zerglingi din acest cuib încetează şi toate cuiburile susţinute vital de acesta devin autonome. Dacă un cuib susţinut vital de un alt cuib este distrus, acesta se regenerează instantaneu, iar producţia de zerglingi rămâne neîntreruptă.

Tassadar poate distruge un cuib instantaneu folosind laserul de purificare de pe nava "Spear of Adun". Înainte să tragă, laserul trebuie să se încarce timp de o oră şi se descarcă de fiecare dată când trage. Iniţial, laserul este descărcat.

Tassadar vrea să distrugă permanent toate cuiburile, astfel încat la final să existe un număr minim de zerglingi.

Ajutaţi-l pe Tassadar să purifice planeta!

Date de intrare

Fişierul de intrare purification.in conţine pe prima linie numărul NN de cuiburi. Pe următoarea linie se vor afla NN numere WiW_i, semnificând numărul de zerglingi produşi de cuibul ii într-o oră. Pe linia următoare se vor afla alte NN numere FiF_i, reprezentând cuibul care susţine vital cuibul ii, sau 1-1 în cazul în care cuibul ii este autonom.

Date de ieșire

Fişierul de ieşire purification.out va conţine pe prima linie numărul minim de zerglingi rămaşi pe planetă după distrugerea permanentă a tuturor cuiburilor.

Restricții și precizări

  • 1N2 0001 \leq N \leq 2 \ 000
  • 0Wi5000 \leq W_i \leq 500
  • Se garantează că pot fi distruse permanent toate cuiburile
  • Pentru teste în valoare de 1010 puncte, N10N \leq 10
  • Pentru teste în valoare de alte 1010 puncte, N20N \leq 20
  • Pentru teste în valoare de alte 1010 puncte, N50N \leq 50
  • Pentru teste în valoare de alte 1010 puncte, N200N \leq 200

Exemplu

purification.in

6
1 5 3 2 1 50
-1 0 0 1 1 -1

purification.out

95

Explicație

Ordinea optimă de distrugere a cuiburilor este (5,0,1,2,3,4)(5, 0, 1, 2, 3, 4). Cuibul 55 (autonom) este distrus după o oră, deci produce 1501 \cdot 50 zerglingi. Cuibul 00 (autonom) este distrus după două ore, deci produce 212 \cdot 1 zerglingi. Cuibul 11, iniţial, este susţinut vital de cuibul 00, dar acum este autonom şi este distrus după trei ore, deci produce 353 \cdot 5 zerglingi. Cuibul 22 este distrus după patru ore, deci produce 434 \cdot 3 zerglingi. Cuibul 33 este distrus după cinci ore, deci produce 525 \cdot 2 zerglingi. Cuibul 44 este distrus după şase ore, deci produce 616 \cdot 1 zerglingi. După ce toate cuiburile au fost distruse, iar producţia de zerglingi a încetat complet, numărul de zerglingi rămaşi este 150+21+35+43+52+61=951 \cdot 50 + 2 \cdot 1 + 3 \cdot 5 + 4 \cdot 3 + 5 \cdot 2 + 6 \cdot 1 = 95.

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