Cod sursa(job #2710907)

Utilizator sebastian.barbarasaSebastian Barbarasa sebastian.barbarasa Data 23 februarie 2021 13:34:28
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#define NMAX 100002
using namespace std;

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

int n;
int a[NMAX];
int lgmax[NMAX], lg;
int poz[NMAX];

void pd();
void afisare();

int main()
{
 int i;
 fin>>n;
 for (i=1; i<=n; i++) fin>>a[i];
 pd();
 afisare();
 fin.close();
 fout.close();
 return 0;
}

void afisare()
{int i, unde;
 lg=0;
 for (i=1; i<=n; i++)
      if (lg<lgmax[i])
         {
          lg=lgmax[i];
          unde=i;
         }
 fout<<lg<<'\n';
 while (unde)
       {
        fout<<a[unde]<<' ';
        unde=poz[unde];
       }
}

void pd()
{int i, j;
 lgmax[n]=1; poz[n]=0;
 for (i=n-1; i>0; i--)
     {
      lgmax[i]=1; poz[i]=0;
      for (j=i+1; j<=n; j++)
           if (a[i]<a[j])
               if (lgmax[i]<1+lgmax[j])
                  {
                   lgmax[i]=1+lgmax[j];
                   poz[i]=j;
                  }
     }
}