Diferente pentru winter-challenge-1/solutii intre reviziile #6 si #7

Nu exista diferente intre titluri.

Diferente intre continut:

# A[i-1][j-1][k-1]+|Val_initiala[i]-k| (daca vrem ca valoarea initiala a celui de-al i-lea element sa fie k sis a-mi creez inca un element dinstinct)
# A[i-1][j][k-1] (nu cresc nici valoarea elementului i, nici numarul de elemente distincte)
Pentru reconstituire vom lucra cu o matrice B[i][j][k] care ia valori din multimea {0, 1, 2}, semnificand conditia din care a provenit starea (i,j,k).
 
Se observa ca aceasta solutie ar fi obtinut foloseste foarte multa memorie (O(N*K*(B-A)) si ar fi obtinut doar 40% din punctaj.
Pentru reconstituire vom lucra cu o matrice B[i][j][k] care ia valori din multimea {0, 1, 2}, semnificand conditia din care a provenit starea (i,j,k). Se observa ca aceasta solutie ar fi obtinut foloseste foarte multa memorie (O(N*K*(B-A)) si ar fi obtinut doar 40% din punctaj.
Solutia 100 de puncte incepe prin a observa ca, la un pas, nu sunt folosite decat "linia" curenta si "linia" anterioara din matricea A. Pentru reconstituire se poate folosi urmatorul smen: retinem din 14 in 14 "linii" informatiile din matricea A (cea de la prima solutie), adica R[1][j][k] =  A[1][j][k] (1 ≤ j ≤ K si A+200 ≤ k ≤ B+200), R[2][j][k] = A[15][j][k] (1 ≤ j ≤ K si A+200 ≤ k ≤ B+200), R[3][j][k] = A[29][j][k] (1 ≤ j ≤ K si A+200 ≤ k ≤ B+200), etc. Dupa ce am completat matricea R, reluam dinamica de la coada la cap si ne vom folosi doar de matricea R. Astfel la pasul i vom reconstitui doar liniile care se afla intre liniile R[i][j][k] si R[i-1][j][k] (1 ≤ j ≤ K si A+200 ≤ k ≤ B+200), adica intre (i-1)*14+1 si i*14+1 in matricea de la prima solutie. Astfel o sa avem o memorie de O(14*K*(B-A)).

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.