fbpx

Problema #2683 – easy_ssc – Rezolvari PBInfo

de Mihai-Alexandru

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
#include <bits/stdc++.h>

using namespace std;
int n , x , a[1001] , cnt;
int main()
{
    cin >> n;
    for(int i = 1 ; i <= n ; i++)
    {
        cin >> x;
        int ok = 0;
        for(int i = 1 ; i <= cnt && ok == 0; i++)
            if(x > a[i])
            {
                a[i] = x;
                ok = 1;
            }
        if(ok == 0)a[++cnt] = x;
    }
    cout << cnt;
}
Comentarii

S-ar putea sa iti placa