Cod sursa(job #2175477)

Utilizator gabiluciuLuciu Gabriel gabiluciu Data 16 martie 2018 17:24:29
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
using namespace std;
int n, a[100000],l[100000],urm[100000];
int main()
{
    int m=0;
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    //fin>>n;
    scanf("%d",&n);
    for(int i=0;i<n;++i)
        scanf("%d",&a[i]);
    l[n]=1;
    urm[n]=-1;
    for(int i=n-1;i>=0;--i){
        l[i]=1;
        urm[i]=-1;
        for(int j=1+i;j<n;++j){
            if(l[j]+1>l[i]&&a[j]>a[i]){
                l[i]=l[j]+1;
                urm[i]=j;
            }
        }
        if(l[i]>l[m])
            m=i;
    }
    //fout<<l[m]<<'\n';
    printf("%d\n",l[m]);
    for(int i=m;i!=-1;i=urm[i])
        printf("%d ",a[i]);
        //fout<<a[i]<< ' ';
    return 0;
}