CSES - Alijonon muodostus

Annettuna on lista, jossa on nn kokonaislukua. Tehtäväsi on muodostaa listan pisin nouseva alijono. Jos mahdollisia alijonoja on useita, voit muodostaa minkä tahansa niistä.

Esimerkiksi listassa [4,1,5,6,3,4,3,8][4,1,5,6,3,4,3,8] pisin nouseva alijono sisältää neljä lukua. Mahdolliset alijonot ovat [1,3,4,8][1,3,4,8], [1,5,6,8][1,5,6,8] ja [4,5,6,8][4,5,6,8].

Toteuta tiedostoon findlis.py funktio find_sequence, jolle annetaan lista kokonaislukuja. Funktion tulee palauttaa listan pisin nouseva alijono.

Funktion tulee toimia tehokkaasti, kun 1n1001 \le n \le 100.

def find_sequence(numbers):
    # TODO

if __name__ == "__main__":
    print(find_sequence([1, 2, 3])) # [1, 2, 3]
    print(find_sequence([3, 2, 1])) # [1]
    print(find_sequence([1, 1, 1, 1, 1])) # [1]

    print(find_sequence([1, 8, 2, 7, 3, 6])) # [1, 2, 3, 6]
    print(find_sequence([1, 1, 2, 2, 3, 3])) # [1, 2, 3]
    print(find_sequence([4, 1, 5, 6, 3, 4, 3, 8])) # [1, 3, 4, 8]