Cod sursa(job #2420444)

Utilizator albertyoAlbert Mindrescu albertyo Data 12 mai 2019 00:40:57
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#define N 100005
using namespace std;

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

int a[N],n,dp[N],drum[N],poz;

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

void Parcurgere()
{ int i,j;
  for(i=1;i<=n;i++)
     {  dp[i]=1; drum[i]=i;
        for(j=1;j<i;j++)
          if(a[j]<a[i])
            if(dp[j]+1>dp[i])
              { dp[i]=dp[j]+1;
                drum[i]=j;
              }
     }
  int vmax=0;
  for(i=1;i<=n;i++)
      if(dp[i]>vmax) {vmax=dp[i]; poz=i;}
  fout<<vmax<<"\n";
}

void AfisareDrum(int p)
{  if(p!=drum[p])
      { AfisareDrum(drum[p]);
        fout<<a[p]<<" ";
      }
   else
      { fout<<a[p]<<" ";
        return;
      }
}

int main()
{   Citire();
    Parcurgere();
    AfisareDrum(poz);
    return 0;
}