Copaci3

O prima observatie pe care o putem face este faptul ca daca diferenta dintre primul si ultimul copac este mai mare decat N * D atunci nu exista solutie. Pentru celelalte cazuri putem construi o dinamica D[i][j] insemnand costul minim pentru a aduce copacul i la inaltimea j, iar primi i copaci formeaza o configuratie estetica. O implementare brute force a acestei solutii are complexitate O(N * H2) putand fi redusa la O(N * H) folosind un deque pentru a calcula recurenta. Aceasta solutie ar fi adus ~20 de puncte.
Pentru 100 de puncte se observa faptul ca singurele inaltimi care conteaza sunt inaltimile de forma H[i] * X unde X se afla in intervalul [-N...N]. Astfel ajungem la N2 inaltimi care conteaza, si astfel putem aduce solutia O(N * H) la complexitatea O(N3).