Cod sursa(job #808828)

Utilizator popacamilpopa camil popacamil Data 7 noiembrie 2012 13:46:32
Problema Subsir crescator maximal Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<cstdio>
using namespace std;

int v[100005],lg[100005],lgmax,urm[100005],i,j,n,pozlgmax,max;

int main(){

    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);

    scanf("%d",&n);

    for(i=1;i<=n;++i){

        scanf("%d",&v[i]);

    }

    lg[n]=1;
    urm[n]=-1;
    for(i=n-1;i>=1;--i){
        lg[i]=1;
        urm[i]=-1;
        for(j=i+1;j<=n;++j){
            if(lg[i]<1+lg[j] && v[i]<v[j]){

                lg[i]=1+lg[j];
                urm[i]=j;

            }

        }

    }


    for(i=2;i<=n;++i){
        if(max<lg[i]){
            max=lg[i];
            pozlgmax=i;
        }
    }

    printf("%d\n",max);
    i=pozlgmax;
    while(i!=-1){

        printf("%d ",v[i]);
        i=urm[i];
    }
    printf("%d",v[i]);
    return 0;

}