# PBinfo #2683 – easy_ssc – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Se dă un șir de n numere naturale. Șirul poate fi partiționat în mai multe moduri într-un număr de subșiruri strict crescătoare. De exemplu, șirul 4 6 2 5 8 1 3 7 poate fi partiționat astfel: 4 6 8 (primul subșir), 2 5 7 (al doilea) și 1 3 (al treilea). O altă modalitate este formând patru subșiruri: 4 5 7, 6 8, 2 3 și 1.

Cerința
Să se determine numărul minim de subșiruri strict crescătoare în care se poate partiționa șirul.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi șirul de n numere naturale, separate prin spații.

Date de ieșire
Programul va afișa pe ecran numărul minim de subșiruri strict crescătoare în care se poate partiționa șirul.

Restricții și precizări

1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 50.000
Un subșir se obține dintr-un șir prin eliminarea a zero, unul, sau mai multe elemente.

Exemplu:
Intrare

8
4 6 2 5 8 1 3 7
Ieșire

3

## Cod sursă C++

```cpp
#include <iostream>
#define nmax 1003
using namespace std;
int a[nmax];
int n, d[nmax], k;
/// d[i]=capatul celui de-al i-lea subsir
int main()
{
    int i, j, x;
    cin >> n;
    k = 0;
    d[0] = 1e9;
    for (i = 1; i <= n; i++)
    {
        cin >> x;
        if (x <= d[k]) d[++k] = x;
        else
        {
            for (j = 1; d[j] >= x; j++)
                ;
            d[j] = x;
        }
    }
    cout << k << "\n";
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2683)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2683/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2683/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
