Cod sursa(job #2252058)

Utilizator TeoMiliMilitaru Teodora TeoMili Data 2 octombrie 2018 11:51:28
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>

using namespace std;
int l[100001],tata[100001],n,i,sol[100001],Max,poz,k,v[100001],j;
int main()
{
    ifstream cin("scmax.in");
    ofstream cout("scmax.out");
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>v[i];
    Max=0;
    for(i=1;i<=n;i++){
        l[i]=1;
        tata[i]=0;
        for(j=i-1;j>=1;j--)
            if(v[i]>v[j])
                if(l[i]<l[j]+1){
                    l[i]=l[j]+1;
                    tata[i]=j;
                }
        if(l[i]>Max){
            Max=l[i];
            poz=i;
        }

    }
    k=Max;
    while(k!=0){
        sol[k]=poz;
        poz=tata[poz];
        k--;
    }
    cout<<Max<<'\n';
    for(i=1;i<=Max;i++)
        cout<<v[sol[i]]<<" ";
    return 0;
}