Najdłuższy Podciąg Rosnący

Transkrypt

Najdłuższy Podciąg Rosnący
Najdłuższy Podciąg Rosnący
Ciąg liczb a1, . . . , an jest rosnący jeżeli ai < ai+1 dla każdego i. Ciąg b1, . . . , bm
jest podciągiem ciągu a1, . . . , an jeżeli istnieje rosnący ciąg indeksów i1, . . . , im taki
ze:
ai1 = b1, ..., aim = bm.
Dla zadanego ciągu a należy skonstruować jego najdłuższy rosnący podciąg b.
Wejście
Pierwsza linia wejścia zawiera liczbę całkowitą z – liczbę zestawów danych, których
opisy występują kolejno po sobie. Opis jednego zestawu jest następujący:
W pierwszym wierszu zestawu danych znajduje sie liczba n, 1 6 n 6 500000. W
drugim wierszu znajdują się kolejne wyrazy ciągu a1, . . . , an. Wyrazy ciągu są
liczbami
całkowitymi.
Wyjście
Dla każdego zestawu danych wejściowych należy wypisać dwa wiersze: w
pierwszym
długość maksymalnego podciągu rosnącego m, w drugim rosnący ciąg indeksów i1, .
. . , im
taki ze: ai1 , ..., aim jest ciągiem rosnącym. Jeżeli istnieje więcej niż jeden maksymalny
względem długości podciąg rosnący, należy wybrać dowolny z nich.
Dostępna pamięć: 20MB
Przykład
Dla danych wejściowych:
1
5
14324
Poprawna odpowiedzią jest:
3
145