Cod sursa(job #941182)

Utilizator FayedStratulat Alexandru Fayed Data 18 aprilie 2013 07:39:21
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#define NMAX 100001

int V[NMAX];
int L[NMAX];
int n,Lmax,k,maxim;

inline void citesc(){


    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    scanf("%d",&n);
    for(register int i=1;i<=n;++i)
        scanf("%d",&V[i]);
}

inline void solve(){

    L[n] = 1;
    for(register int i=n-1;i>0;--i){

        maxim = 0;
            for(register int j=i+1;j<=n;++j){
                if(L[j] > maxim && L[i] <= L[j])
                    maxim = L[j];
            }
        L[i] = maxim+1;
        if(L[i] > Lmax)
            Lmax = L[i];
    }
}

inline void Drum(){

    int p=1,t=0;
printf("%d\n",Lmax);
       do{
 while(L[p]!=Lmax || V[t] >= V[p])
        ++p;
        printf("%d ",V[p]);
        t = p;
        Lmax--;
      }while(Lmax);
}

int main(){

    citesc();
    solve();
    Drum();

  return 0;
}