Cod sursa(job #2553615)

Utilizator george-rotariuRotariu George george-rotariu Data 22 februarie 2020 10:29:44
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#define NMAX 100002

using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");

int a[NMAX];
int lgmax[NMAX];
int urm[NMAX];
int n, i, j, pozmax, maxim;
int main()
{
   fin>>n;
   for (i=1; i<=n; i++) fin>>a[i];
   lgmax[n]=1; urm[n]=0;
   for (i=n-1; i>0; i--)
       {
        lgmax[i]=1; urm[i]=0;
        for (j=i+1; j<=n; j++)
            if (a[i]<a[j] && lgmax[i]<1+lgmax[j])
               {
                lgmax[i]=1+lgmax[j];
                urm[i]=j;
               }
       }
   ///lungimea maxima
   maxim=lgmax[1]; pozmax=1;
   for (i=2; i<=n; i++)
       if (maxim<lgmax[i]) {maxim=lgmax[i]; pozmax=i;}
   fout<<maxim<<'\n';
   ///afisez subsirul crescator de lungime maxima
   i=pozmax;
   while (i)
         {
          fout<<a[i]<<' ';
          i=urm[i];
         }
   fout<<'\n';
   fout.close();
   return 0;
}