Cod sursa(job #1256762)

Utilizator cristinelulCristian Virga cristinelul Data 6 noiembrie 2014 20:33:27
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>

using namespace std;

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

int n,i,v[100001],j,lgmax[100001],lg,prec[100001],rez[100001],nr,poz;
void citire()
{
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];
}
void calculare()
{
    for(i=1;i<=n;i++)
    {
        lgmax[i]=1;
        for(j=1;j<i;j++)
        {
            if(v[j]<v[i])
                if(lgmax[i]<lgmax[j]+1)
                {
                    lgmax[i]=lgmax[j]+1;
                    prec[i]=j;
                }
        }
    }
    for(i=1;i<=n;i++)
        if(lg<lgmax[i])
        {
            lg=lgmax[i];
            poz=i;
        }
    while(poz!=0)
    {
        rez[++nr]=v[poz];
        poz=prec[poz];
    }
}
int main()
{
    citire();
    calculare();
    fout<<lg<<'\n';
    for(i=nr;i>0;i--)
        fout<<rez[i]<<' ';
    fout.close();
    return 0;
}