Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2016-08-19 14:24:19.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:tequila.in, tequila.outSursăJunior Challenge 2016
AutorAlexandru Niculae, Costin OncescuAdăugată deJuniorChallenge2015JuniorChallenge2016 JuniorChallenge2015
Timp execuţie pe test0.35 secLimită de memorie65536 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Tequila

Intors acasa de la ONI, Antonio se plimba prin Gradina Publica din Barlad impreuna cu cel mai bun prieten al sau, Zetul.
Antonio ii spune lui Zetul urmatoarea problema, care se va da la JBOI 2016 (informatie sigura, aflata de Antonio):

Antonio si-a imaginat o firma cu N angajati, numerotati de la 1 la N. Fiecare angajat al firmei are cate un sef direct(in afara de seful suprem), iar fiecare angajat are ca sef indirect seful suprem. Se mai stie ca fiecare membru al firmei (inclusiv seful suprem) are o valoare asociata, val[X].

Exista 2 operatii:
-operatia de update: Noua valoarea asociata a angajatului X va fi Y;
-operatia de query: Cat timp seful suprem nu este concediat, Zetul alege la intamplare un angajat X si va fi nevoit sa bea val[X] shot-uri de tequila, iar mai apoi va concedia toti angajatii care il au ca sef indirect pe X, cat si pe X. Antonio este curios cate shot-uri de tequila va bea Zetul in medie.

Cerinta

Pentru arborele initial, cat si dupa fiecare operatie de update, Antonio va cere sa aflati valoarea operatiei de query.

Date de intrare

Fisierul de intrare tequila.in va contine pe prima linie doua numere naturale N si M, reprezantand numarul de angajati ai firmei si numarul de update-uri;
Urmatoarea linie va contine N numere naturale, pentru fiecare angajat X (1 ≤ X ≤ N) valoarea asociata initial;
Urmatoarele N linii vor descrie firma, pentru fiecare nod X (1 ≤ X ≤ N) seful direct al acestuia;
Urmatoarele M linii vor descrie operatiile de update sub forma: X Y (noua valoare a lui X este Y);

Date de ieşire

În fişierul de ieşire tequila.out va contine M + 1 linii, raspunsul pentru fiecare query.

Restricţii si precizari

  • Fie Z seful direct al angajatului X. Spunem ca seful indirect al lui X este fie Z, fie seful indirect al lui Z.
  • Seful suprem va avea seful direct codificat cu -1.
  • 1 ≤ val[X] ≤ 100000 (1 ≤ X ≤ N)
  • Rezultatul se va verifica cu o precizie de 10-5
  • Subtask 1 (20 puncte): 1 ≤ N ≤ 20 si nu exista update-uri
  • Subtask 2 (10 puncte): 1 ≤ N ≤ 100000, nu vor exista 2 noduri X si Z cu acelasi numar de sefi indirecti si nu exista update-uri
  • Subtask 3 (10 puncte): 1 ≤ N ≤ 100000 si nu vor exista 2 noduri X si Z cu acelasi numar de sefi indirecti
  • Subtask 4 (60 puncte): 1 ≤ N ≤ 100000

Exemplu

tequila.intequila.out
3 1
1 1 1
-1
1
1
1 0
2.00000
1.00000

Explicaţie

Eliminam in ordine nodurile 1: 1/3 * val [1];
Eliminam in ordine nodurile 2 , 1: 1/3 * 1/2 * (val [2] + val [1]);
Eliminam in ordine nodurile 3 , 1: 1/3 * 1/2 * (val [3] + val [1]);
Eliminam in ordine nodurile 2 , 3 , 1: 1/3 * 1/2 * 1 * (val [2] + val [3] + val [1]);
Eliminam in ordine nodurile 3 , 2 , 1: 1/3 * 1/2 * 1 * (val [3] + val [2] + val [1]);

Pentru arborele initial: 1/3 + 2/6 + 2/6 + 3/6 + 3/6 = 2
Dupa primul update: 0 + 1/6 + 1/6 + 2/6 + 2/6 = 1

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?