Una sottosequenza è una sequenza che può essere derivata da un'altra sequenza eliminando alcuni elementi senza cambiare l'ordine degli elementi rimanenti. Una sottosequenza strettamente crescente è una sottosequenza in cui ogni elemento è più grande di quello precedente.
La sottosequenza crescente più pesante di una sequenza è la sottosequenza strettamente crescente che ha la somma degli elementi più grande.
Implementa un programma o una funzione nella tua lingua preferita che trovi la somma degli elementi della sottosequenza crescente più pesante di un determinato elenco di numeri interi non negativi.
Esempi:
[] -> 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])
Nota che devi solo fornire la somma degli elementi della sottosequenza crescente più pesante, non la sottosequenza stessa.
Vince il codice asintoticamente più veloce, con una dimensione del codice inferiore in byte come tiebreaker.