👤
Razergov
a fost răspuns

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


Răspuns :

#include <iostream>

using namespace std;

int main()

{

   int v[1001], n, i, j, subsiruri=0, x;

   cin>>n;

   for(i=1;i<=n;i++)

       cin>>v[i];

   while(n){

       subsiruri++;

       x=v[1];

       for(j=1;j<n;j++)

           v[j]=v[j+1];

       n--;

       for(i=1;i<=n;i++)

       if(x<v[i]){

           x=v[i];

           for(j=i;j<n;j++)

               v[j]=v[j+1];

           n--;

           i--;

       }

   }

   cout<<'\n';

   cout<<subsiruri;

   return 0;

}