Cod sursa(job #2261508)

Utilizator MocanuDianaMocanu Diana Paula MocanuDiana Data 16 octombrie 2018 11:56:34
Problema Subsir crescator maximal Scor 45
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");

int a[100005],n,i,j,maxim=0,maxlg=0,urm[100005],LIS[100005],urm_x;



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

 void pd()
 {
     LIS[n]=1;
     urm[n]=0;
     for(i=n-1;i>0;i--)
      {maxim=1;
      for(j=i+1;j<=n;j++)
        {
         if(a[i]<a[j])
          {
              if(LIS[j]+1>=maxim)
                {maxim=LIS[j]+1;
                urm_x=j;}
          }
        }
      LIS[i]=maxim;
      urm[i]=urm_x;}
 }

 void afisare()
 {
     int imax;
     for(i=1;i<=n;i++)
       if(LIS[i]>=maxlg)
        {maxlg=LIS[i];
        imax=i;}
    fout<<maxlg<<'\n';

    fout<<a[imax]<<' ';

  while(urm[imax])
    {imax=urm[imax];
    fout<<a[imax]<<' ';}
 }



int main()
{
    citire();
    pd();
    afisare();
    return 0;
}