Nu aveti permisiuni pentru a descarca fisierul grader_test5.ok
Diferente pentru problema/treap intre reviziile #45 si #19
Diferente intre titluri:
Treap
treap
Diferente intre continut:
== include(page="template/taskheader" task_id="treap") ==
Undeva intr-un univers paralel, Piromanul a ajuns sa iubeasca apa si nu focul ca de obicei. Totusi, nu s-a schimbat prea mult... inca ii plac treapurile, ca in problema 'Metro':http://www.infoarena.ro/problema/metro . Gandindu-se ca comisia A.G.M s-ar face de ras daca ar lasa sa treaca cea de-a treia editie fara o problema cu treapuri, s-a gandit sa aibe grija de imaginea tuturor colegilor sai.
- Arbore (graf neorientat conex si **aciclic**) cu N noduri - Arbore binar (fiecare nod are cel putin 0 fii si cel mult doi fii) - Arbore inradacinat in nodul 1
Piro,baiatfindealtfel, nuisidoreste sa fiechiarcelmaiantipatizatmembru al comisiei,asacavafaceoscurtaincursiuneimpreuna cuvoi inceea ceinseamna **taineletreap-ului**.
-Cati subarbori exista cu proprietatea ca orice nod am alege din acel subarbore, nodul respectiv are prioritatea mai mare sau egala cu a fiilor sai si cheia acelui nod este mai mare sau egala cu a unuia dintre fii daca acel fiu exista si mai mica strict decat a celuilalt fiu daca acesta exista ?-
**Unarbore**esteun graf neorientatconex siaciclic.
De la Ceterchi citire:
**Un arbore inradacinat**este un arborecareare radacina fixata.
Un arbore binar de căutare este un arbore binar cu următoarele proprietăţi:
**Un arbore binar** este un arbore cu proprietatea ca fiecare nod din componenta sa are **cel mult** doi fii.
* fiecare nod are o valoare asociată; * pentru fiecare nod, subarborele stâng conţine valori mai mici sau egale decât cea a nodului, iar cel drept conţine valori mai mari sau egale decât cea a nodului
**Un arbore binar de cautare** este un arbore binar cu urmatoarele proprietati: -fiecare nod are o valoare asociata -pentru fiecare nod, subarborele stang contine valori mai mici sau egale decat cea a nodului, iar cel drept contine valori mai mari strict decat cea a nodului
* fiecare nod are prioritatea mai mare sau egala cu cea a fiilor sai (+ treap)
**Un max-heap** este un arbore binar cu proprietatea ca fiecare nod are o valoare asociata si, in plus, valoarea asociata unui nod este mai mare sau egala cu cea asociata fiilor sai. **Un treap** este un arbore cu proprietatea ca fiecare nod are asociat doua valori : cheie si prioritate. Daca ne uitam doar la cheile nodurilor, facand abstractie de prioritati, atunci acesta este **arbore binar de cautare**. Daca ne uitam la prioritatile nodurilor, facand abstractie de chei, atunci acesta este **max-heap**. Dandu-vi-se un arbore binar cu $N$ noduri, inradacinat in nodul $1$, trebuie sa determintati care subarbori au proprietatea de **treap**.
h2. Date de intrare
Fişierul de intrare $treap.in$ va contine pe prima linie numarul $N$. Urmatoarele $N-1$ linii vor contine perechi de cate $2$ numere naturale $x, y$ cu proprietatea ca exista muchie intre nodurile $x$ si $y$ in arbore. Urmatoarea linie va contine $N$ numere, al $i$-lea dintre ele fiind $KEY[~i~]$(adica cheia nodului respectiv). Urmatoarea linie va contine alte $N$ numere, al $i$-lea dintre ele fiind $PRIO[~i~]$(adica prioritatea nodului respectiv).
Fişierul de intrare $treap.in$ va contine pe prima linie numarul $N$. Urmatoarele $N-1$ linii vor contine perechi de cate $2$ numere naturale $x, y$ cu proprietatea ca exista muchie intre nodurile $x$ si $y$ in arbore. Urmatoarea linie va contine $N$ numere, al $i$-lea dintre ele fiind $KEY[~i~]$. Urmatoarea linie va contine alte $N$ numere, al $i$-lea dintre ele fiind $PRIO[~i~]$.
h2. Date de ieşire
h2. Restricţii
*$1 <= N <= 150.000$ *$1 <= KEY[~i~] <= 10^9^$ *$1 <= PRIO[~i~] <= 10^9^$ ***Arborele se considera ca este inradacinat in nodul $1$** ***La finalul fisierului de iesire este $'\n'$, nu spatiu** ***Unsubarboreinradacinatintr-un nodcarenuarefii,este consideratfrunza sireprezintaevidentuntreap** *Nu se garanteazacaprioritatilegenerate suntaleatoare,treap-ulavandformedintrecelemaidiverse.
**$1 <= N <= 150,000$** **$1 <= KEY[~i~] <= 10^9^$** **$1 <= PRIO[~i~] <= 10^9^$** **Arborele se considera ca este inradacinat in nodul $1$** **La finalul fisierului de iesire este $'\n'$, nu spatiu** **#Comisia nu putea lasa sa treaca o noua editie a $A.G.M.$ fara sa dea o problema cu treapuri** **Un subarbore inradacinat intr-un nod care nu are fii, este considerat frunza**
h2. Exemplu
5 5 7 100 9 1 | 1 1 1
| table(example). |_. treap.in |_. treap.out |
|
| 3 1 2 1 3
100 9 1 | 0 1 1 |
table(example). |_. treap.in |_. treap.out |
|3 1 2 2 3 2 1 3 3 2 1 | 0 1 1
|
h3. Explicaţie ...
== include(page="template/taskfooter" task_id="treap") ==