Cod sursa(job #1044631)

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

using namespace std;

const int LUNG=10000;

int a[LUNG],b[LUNG],p[LUNG],c[LUNG];

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

int main()
{
    int n,i,j,lmax=0,p1=0,poz;
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>a[i];
    for(i=1;i<=n;i++)b[i]=1;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<i;j++)
        if(a[j]<a[i] && b[i]<b[j]+1)
            {
                b[i]=b[j]+1;
                if(b[i]>lmax)lmax=b[i];
                p[i]=j;
                poz=i;
            }
    }
    while(poz>0)
    {
        c[++p1]=a[poz];
        poz=p[poz];
    }
    fout<<lmax<<'\n';
    for(i=p1;i>=1;i--)fout<<c[i]<<' ';

}