Cod sursa(job #2261354)

Utilizator baranceanuBaranceanu Vlad baranceanu Data 16 octombrie 2018 10:27:08
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
#define NMAX 100000
using namespace std;
ifstream fin("test.in");
ofstream fout("test.out");
int urm[NMAX],lis[NMAX],v[NMAX];
int n,maxim,inc;
void citire();
void pdt(int k);
void afisare();
int main()
{
    citire();
    pdt(n-1);
    afisare();
    return 0;
}
void citire()
{
    int i;
    fin>>n;
    for(i=0;i<n;i++)
        fin>>v[i];
}
void pdt(int k)
{
    int j;
    if(k==n-1)
    {
        lis[k]=1;
        urm[k]=0;
    }
    else
    {
        for(j=k;j<n;j++)
        {
            if(v[k]<v[j])
            {
                if(lis[j]>lis[k])
                {
                    lis[k]=lis[j]+1;
                    urm[k]=j;
                }
            }
        }
    }
    if(k>0)
            pdt(k-1);

}
void afisare()
{
    int i;
    for(i=0;i<n;i++)
    {
        if(lis[i]>maxim)
        {
            maxim=lis[i];
            inc=i;
        }
    }
    fout<<maxim<<'\n';
    while(urm[inc])
    {
        fout<<v[inc]<<' ';
        inc=urm[inc];


    }
    fout<<v[inc];
}