Изменения
→Решение за время O(N2)
'''if''' a[i] == b[j] '''and''' d[i-1][j] < best + 1 // используем a[i]-й элемент для увеличения НОВП
d[i][j] = best + 1
'''if''' a[i] > b[j] '''and''' d[i-1][j] > best // при следующем равенстве a[i] == b[j']
best = d[i-1][j] // в best будет храниться "лучший" элемент:
ind = j // b[best_indind] < b[j'] и d[i][best_indind] - максимальна<tex> \rightarrow </tex> max
// восстановление (по массиву b)
'''for''' j = 1...m
'''if''' d[n][b_jpos] < d[n][j] b_j pos = j
vector<int> answer
'''while''' pos != b_j 0 //проходим по массиву b, выписывая элементы НОВП '''while''' pos != 0
answer.push(b[pos])
pos = prev[pos]