Sunteți pe pagina 1din 2

Centrul de Pregătire pentru Performanță în

Informatică
Concurs de antrenament
5 februarie 2022

InvSub
Se dă A un șir cu N elemente: a1, a2, …, aN, unde ai reprezintă valoarea elementului de
la poziția i.

Numim subșir al lui A un șir de forma ai1, ai2, …, aik cu proprietatea că:
1 <= i1 < i2 < … < ik <= N și 1 <= k <= N.

Mai spunem că un astfel de subșir este crescător dacă ai1 <= ai2 <= … <= aik.

Dorim ca A să conțină un subșir crescător de lungime cât mai mare. Pentru a îndeplini acest
obiectiv, putem aplica o singură dată următoarea operație: alegem un subșir al șirului A și
inversăm ordinea elementelor sale.

De exemplu, dacă pornim de la șirul A:


4 2 3 5 1 5 6 5 1
și inversăm ordinea elementelor din subșirul marcat folosind caractere aldine (bold):
4 2 3 5 1 5 6 5 1
obținem:
4 1 3 5 1 5 5 6 2

Observați cum subșirul ales pentru această operație va fi așezat pe aceleași poziții și după
inversare, lăsând toate celelalte valori intacte.

Date de intrare
Fișierul invsub.in conține pe prima linie valoarea N (dimensiunea șirului A).
Pe următoarele N linii se regăsesc valorile șirului A: de pe linia i+1 se va citi valoarea ai.

Date de iesire
În fișierul invsub.out afișați lungimea maximă posibilă a unui subșir crescător conținut în
A, după ce se aplică operația de inversare cel mult o dată.

Restrictii
● 1 <= N <= 50
● 1 <= ai <= 50
Centrul de Pregătire pentru Performanță în
Informatică
Concurs de antrenament
5 februarie 2022

Exemplu
invsub.in invsub.out

9 9
3
4
5
11
7
8
10
9
6

Explicație: Pornim de la șirul 3 4 5 11 7 8 10 9 6


Aplicăm operația de inversare asupra subșirului marcat cu litere aldine:
3 4 5 11 7 8 10 9 6
Obținând:
3 4 5 6 7 8 9 10 11
Cel mai lung subșir crescător inclus în șirul astfel obținut are lungimea 9 (subșirul
corespunzător întregului șir).

S-ar putea să vă placă și