Uma subsequência é uma sequência que pode ser derivada de outra sequência, excluindo alguns elementos sem alterar a ordem dos elementos restantes. Uma subsequência estritamente crescente é uma subsequência na qual cada elemento é maior que o anterior.
A subsequência crescente mais pesada de uma sequência é a subsequência estritamente crescente que possui a maior soma de elementos.
Implemente um programa ou função no seu idioma de escolha que encontre a soma do elemento da subsequência crescente mais pesada de uma determinada lista de números inteiros não negativos.
Exemplos:
[] -> 0 ([])
[3] -> 3 ([3])
[3, 2, 1] -> 3 ([3])
[3, 2, 5, 6] -> 14 ([3, 5, 6])
[9, 3, 2, 1, 4] -> 9 ([9])
[3, 4, 1, 4, 1] -> 7 ([3, 4])
[9, 1, 2, 3, 4] -> 10 ([1, 2, 3, 4])
[1, 2, 4, 3, 4] -> 10 ([1, 2, 3, 4])
[9, 1, 2, 3, 4, 5, 10] -> 25 ([1, 2, 3, 4, 5, 10])
[3, 2, 1, 2, 3] -> 6 ([1, 2, 3])
Observe que você só precisa fornecer ao elemento a soma da subsequência crescente mais pesada, não a subsequência em si.
O código assintoticamente mais rápido vence, com um tamanho de código menor em bytes como desempatador.