Cod sursa(job #809143)

Utilizator manuelahordunaHorduna Manuela manuelahorduna Data 7 noiembrie 2012 22:14:45
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<fstream>
#define nmax 1000003
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");

void citire();
void pd();
void afisare();

int lgmax[nmax],a[nmax],urm[nmax];
int n ,imax, maxx;

int main()
{
    citire();
    pd();
    afisare();

    return 0;
}

void citire()
{
    int i;
    fin>>n;
    for(i=1;i<=n;++i)
        fin>>a[i];
}
void pd()
{
    int i,j;
    lgmax[n]=1;
    urm[n]=-1;
    maxx=1; imax=n;
    for(i=n-1;i>=1;--i)
    {
        lgmax[i]=1;
        urm[i]=-1;
    for(j=i+1;j<=n;++j)
        if(a[i]<a[j] && lgmax[i]<lgmax[j]+1)
        {
            lgmax[i]=lgmax[j]+1;
            urm[i]=j;
            if(lgmax[i]>maxx)
                maxx=lgmax[i],imax=i;
        }
    }
}

void afisare()
{
    int i;
    fout<<maxx<<'\n';
    i=imax;
    while(i!=-1)
    {
        fout<<a[i]<<' ';
        i=urm[i];
    }
}