Mai intai trebuie sa te autentifici.

Diferente pentru fmi-no-stress-3/solutii intre reviziile #7 si #6

Nu exista diferente intre titluri.

Diferente intre continut:

Precalculând pentru fiecare nod care este poziţia sa din parcurgerea în inordine, putem rezolva problema în timp liniar, folosind o funcţie recursiva. Iniţial ştim ca rădăcina este primul nod din parcurgerea în preordine. O cautam în parcurgerea inordine. Acum fiul stâng al rădăcinii este subarborele cu parcurgerea în inordine intre indicii $1 şi $X-1$, iar fiul drept este subarborele cu parcurgerea în inordine intre indicii $X+1$ şi $N$. Apelam funcţia mai departe şi pentru cei doi fii, în aceasta ordine, pentru a ştii la al câtelea nod suntem din parcurgerea în preordine.
== code(cpp) |
 
void construct (int left,int right,node* &root) {
    if (left>right)
        return ;
    construct (left,mij-1,root->left);
    construct (mij+1,right,root->right);
}
==
 
h2. 'Muzica':problema/muzica
Pentru $100p$ problema se rezolva liniar. Se inserează melodiile lui Vasile într-un hash. Apoi se generează cele M melodii alei lui DJ Random, având grija ca înmulţirea trebuie făcută pe long long, iar operaţia modulo trebuie aplicata o singura data, pentru ca este foarte costisitoare din punct de vedere al timpului, iar pentru $10.000.000$ de operaţii, o constanta de 3 creste timpul. Apoi, pentru o melodie de-a lui DJ Random, se cauta în hash, iar dacă aceasta exista, se incrementează soluţia, iar acea melodie se scoate din hash, pentru a nu fi adunata de mai multe ori la soluţie.
 
Problema se poate rezolva şi folosind o căutare binara, sau folosind set-uri. Aceste implementări ajungeau pana la $70p$.
==
 

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.