Cod sursa(job #2022105)

Utilizator IustinSSurubaru Iustin IustinS Data 15 septembrie 2017 17:55:41
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#define vmax 1000005

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

void citire();
void prelucrare();
void afisare();

int n,a[vmax],lgmax[vmax],urm[vmax], LIS, p;
int main()
{
    citire();
    prelucrare();
    afisare();
    return 0;
}

void citire()
{
   fin>>n;
   for (int i=1; i<=n; i++)
      fin>>a[i];

}
void prelucrare()
{int i,j,jmx;
 lgmax[n]=1;
 for (i=n-1; i>=1; i--)
      {
        lgmax[i]=1;
          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;
               }
            }
         }

}
void afisare()
{
   int i;

   for (i=1; i<=n; i++)
   {
      if (lgmax[i]>=LIS)
      {
         LIS=lgmax[i];
         p=i;
      }
   }
   fout<<LIS<<'\n';
   for (i=p; urm[i]; i=urm[i])
      fout<<a[i]<<" ";
   fout<<a[i];

}