Cod sursa(job #2130063)

Utilizator bebeetarepredescu bebeetare Data 13 februarie 2018 13:36:16
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>

using namespace std;
int n,i,j,lmax,Max,poz,l[100002],m[100002],a[100002];
ifstream f("scmax.in");
ofstream g("scmax.out");
void recursivitate(int lmax,int poz)
{
    if(lmax==0)return ;
    else if(l[poz]==lmax)
    {
        m[++Max]=a[poz];
        recursivitate(lmax-1,poz-1);
    }
    else
    {
        recursivitate(lmax,poz-1);
    }
}
void recursivitate1()
{
    int i;
    for(i=Max;i>=1;i--)
    {
        g<<m[i]<<" ";
    }
}
int main()
{
    f>>n>>a[1];
    l[1]=1;
    poz=1;
    lmax=1;
    for(i=2;i<=n;i++)
    {
        f>>a[i];
        Max=0;
        for(j=1;j<=i-1 && Max!=lmax;j++)
        {
            if(a[i]>a[j] && Max<l[j])Max=l[j];
        }
        l[i]=Max+1;
        if(l[i]>lmax)
        {
            lmax=l[i];
            poz=i;
        }
    }
    g<<lmax<<'\n';
    Max=0;
    m[++Max]=a[poz];
    recursivitate(lmax-1,poz-1);
    recursivitate1();
    return 0;
}