Cod sursa(job #1044639)

Utilizator PetrutiuPaulPetrutiu Paul Gabriel PetrutiuPaul Data 30 noiembrie 2013 10:13:37
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>

using namespace std;

ifstream f("scmax.in");
ofstream g("scmax.out");

const int NMAX=1000000;

int a[NMAX], b[NMAX], c[NMAX], d[NMAX];

int main()
{
    int n, i, j, lmax=0, bmax, poz, p=0;

    f>>n;

    for(i=1;i<=NMAX;i++) b[i]=1;

    for(i=1;i<=n;i++) {
            f>>a[i];
            for(j=1;j<i;j++) if(a[j]<a[i]) if(1+b[j]>b[i]) {b[i]=1+b[j]; bmax=j;}
            if(b[i]>lmax) {lmax=b[i]; poz=i;}
            if(b[i]==1) c[i]=-1;
            else c[i]=bmax;

    }

    g<<lmax<<'\n';

    while(poz>0)  {
        d[++p]=a[poz];
        poz=c[poz];
    }

    for(i=p;i>=1;i--) g<<d[i]<<" ";

    f.close();
    g.close();
    return 0;





}