Cod sursa(job #2132479)

Utilizator Cristian.BBurghelea Cristian Cristian.B Data 15 februarie 2018 19:59:16
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;

int v[100005]; ///vectorul de numere
int lmax[100005];/// lmax[i]=lungimea maxima a subsirului care incepe cu v[i]
int urm[100005;///urm[i]=cine urmeaza dupa v[i]
int n,i,j,k,jbest;

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

int main()
{ fin>>n;
  for(i=1;i<=n;i++)fin>>v[i];

  lmax[n]=1;urm[n]=0;

  for(i=n-1;i;--i)
  { jbest=0;
     for(j=i+1;j<=n;++j)
        if(v[i]<v[j] && lmax[j]>lmax[jbest]) jbest=j;
    lmax[i]=1+lmax[jbest];
    urm[i]=jbest;
  }
  ///determin cea mai mare valoare din lmax (k=pozitia pe care se afla maximul)
  k=1;
  for(i=2;i<=n;++i)
     if(lmax[i]>lmax[k])k=i;
  fout<<lmax[k]<<endl;
  ///extrag subsirul
  while(k)
  {
      fout<<v[k]<<" ";
      k=urm[k];
  }


  fin.close();fout.close();

    return 0;
}