Diferente pentru problema/countbst intre reviziile #3 si #6

Nu exista diferente intre titluri.

Diferente intre continut:

== include(page="template/taskheader" task_id="countbst") ==
Un arbore binar este un arbore cu rădăcină în care fiecare nod are maxim 2 fii. Un arbore binar de căutare ({*B*}inary {*S*}earch {*T*}ree) este un arbore binar în care fiecare nod are asociată o valoare, iar valoarea unui nod este strict mai mare decât toate valorile din subarborele său stâng şi strict mai mică decât toate valorile din subarborele său drept. Un exemplu de arbore binar de căutare este cel din stânga iar unul greşit în dreapta (deoarece *9* se află în subarborele stâng al lui *5* şi *3*).
Un arbore binar este un arbore cu rădăcină în care fiecare nod are maxim 2 fii. Un arbore binar de căutare ({*B*}inary {*S*}earch {*T*}ree) este un arbore binar în care fiecare nod are asociată o valoare, iar valoarea unui nod este strict mai mare decât toate valorile din subarborele său stâng şi strict mai mică decât toate valorile din subarborele său drept. Un exemplu de arbore binar de căutare este cel din stânga iar unul greşit în dreapta (deoarece $9$ se află în subarborele stâng al lui $5$ şi $3$).
!{width: 300px; margin: 10px}problema/countbst?arbore1.png!
!{width: 300px; margin: 10px}problema/countbst?arbore2.png!
h2. Cerinţă
Cunoscând numerele naturale *N*, *K* şi un şir *A{~1~}*, *A{~2~}*, ...{*A{~K~}*} cu toate elementele numere naturale distincte nenule mai mici sau egale cu *N*, vi se cere să număraţi câţi arbori binari de căutare există cu *N* noduri având valorile asociate nodurilor *1*, *2*, ... *N* (în orice ordine validă), astfel încât şirul *A{~1~}*, *A{~2~}*, ...{*A{~K~}*} să formeze un lanţ în arbore *în această ordine*. De exemplu, pentru *N=8, K=5, A=(6, 7, 5, 3, 4)*, arborele de mai sus din stânga este unul valid.
Cunoscând numerele naturale $N$, $K$ şi un şir $A{~1~}$, $A{~2~}$, ...{$A{~K~}$} cu toate elementele numere naturale distincte nenule mai mici sau egale cu $N$, vi se cere să număraţi câţi arbori binari de căutare există cu $N$ noduri având valorile asociate nodurilor $1$, $2$, ... $N$ (în orice ordine validă), astfel încât şirul $A{~1~}$, $A{~2~}$, ...{$A{~K~}$} să formeze un lanţ în arbore *în această ordine*. De exemplu, pentru $N=8, K=5, A=(6, 7, 5, 3, 4)$, arborele de mai sus din stânga este unul valid.
h2. Date de intrare
Fişierul de intrare *$countbst.in$* va conţine pe prima linie un număr natural *T* (numărul de teste), urmat de *T* teste. Fiecare test va fi descris prin două linii:
● Pe prima linie se vor găsi două numere naturale *N* şi *K* separate printr-un spaţiu.
● Pe linia a doua se vor găsi cele *K* numere naturale nenule distincte *A{~1~}*, *A{~2~}*, ...{*A{~K~}*} separate şi urmate de un spaţiu
Fişierul de intrare $countbst.in$ va conţine pe prima linie un număr natural $T$ (numărul de teste), urmat de $T$ teste. Fiecare test va fi descris prin două linii:
 
* Pe prima linie se vor găsi două numere naturale $N$ şi $K$ separate printr-un spaţiu.
* Pe linia a doua se vor găsi cele $K$ numere naturale nenule distincte $A{~1~}$, $A{~2~}$, ...{$A{~K~}$} separate şi urmate de un spaţiu
h2. Date de ieşire
În fişierul de ieşire $countbst.out$ ...
În fişierul de ieşire $countbst.out$ va conţine răspunsurile pentru fiecare dintre cele $T$ teste, câte unul pe linie: numărul de arbori binari de căutare ce conţin şirul de $K$ numere ca lanţ, afişat modulo $1 000 000 007$ în ordinea testelor din fişierul de intrare.
h2. Restricţii
Problema va fi punctată în baza următoarelor sub-probleme:
table(scoring). |_. Grupă de teste |_. Punctaj |_. Limită N |_. Limită K |_. Limită T |
|1 |3 puncte| N ≤ 12 |k ≤ N |T ≤ 10|
|2 |4 puncte| N ≤ 200 |k ≤ N |T ≤ 10|
|3 |7 puncte| N ≤ 2.000 |k ≤ N |T ≤ 10|
|4 |5 puncte| N ≤ 50 |∑k ≤ 2.000 |T ≤ 2.000|
|5 |6 puncte| N ≤ 200 |∑k ≤ 2.000 |T ≤ 2.000|
|6 |7 puncte| N ≤ 2.000 |∑k ≤ 2.000 |T ≤ 2.000|
|7 |8 puncte| N ≤ 500.000 |∑k ≤ 2.000 |T ≤ 2.000|
|8,9,10 |3*3p=9 puncte| N ≤ 2.000 |∑k ≤ 200.000 |T ≤ 200.000|
|11 |50 puncte| N ≤ 500.000 |∑k ≤ 200.000 |T ≤ 200.000|
|12 |1 punct| N ≤ 3.000.000 |∑k ≤ 200.000 |T ≤ 200.000|
|$1$      |$3 puncte$| $N ≤ 12$|$k ≤ N$|$T ≤ 10$|
|$2$      |$4 puncte$| $N ≤ 200$|$k ≤ N$|$T ≤ 10$|
|$3$      |$7 puncte$| $N ≤ 2.000$|$k ≤ N$|$T ≤ 10$|
|$4$      |$5 puncte$| $N ≤ 50$|$∑k ≤ 2.000$|$T ≤ 2.000$|
|$5$      |$6 puncte$| $N ≤ 200$|$∑k ≤ 2.000$|$T ≤ 2.000$|
|$6$      |$7 puncte$| $N ≤ 2.000$|$∑k ≤ 2.000$|$T ≤ 2.000$|
|$7$      |$8 puncte$| $N ≤ 500.000$|$∑k ≤ 2.000$|$T ≤ 2.000$|
|$8,9,10$ |$3*3p=9 puncte$| $N ≤ 2.000$|$∑k ≤ 200.000$|$T ≤ 200.000$|
|$11$     |$50 puncte$| $N ≤ 500.000$|$∑k ≤ 200.000$|$T ≤ 200.000$|
|$12$     |$1 punct$| $N ≤ 3.000.000$|$∑k ≤ 200.000$|$T ≤ 200.000$|
h2. Exemplu
1 7 4 6 2
| 84
0
| Pentru primul test avem 84 arbori binari de căutare cu nodurile *1,2, … , 10* care conţin lanţul *(2,7,5)*.
| Pentru primul test avem 84 arbori binari de căutare cu nodurile $1,2, … , 10$ care conţin lanţul $(2,7,5)$.
Pentru al doilea test, nu există niciun arbore binar de căutare valid
|

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.