Cod sursa(job #251360)

Utilizator runnaway90Oprescu Radu Constantin runnaway90 Data 2 februarie 2009 13:44:25
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
#define N 100002

int a[N],n,i,max,j,cur,sol[N],rec[N],b[N],nr;


int main (){
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    scanf("%d",&n);for (i=1;i<=n;i++) scanf("%d",&a[i]);
    
    for (i=1;i<=n;i++){
        max=0;
        for (j=0;j<i;j++)
            if (a[j]<a[i] && sol[j]>=max)
               max=sol[j],cur=j;
        sol[i]=max+1;
        rec[i]=cur;
    }
    max=0;
    for (i=1;i<=n;i++)
        if (sol[i]>max)
           max=sol[i],cur=i;
    
    printf("%d\n",max);
    
    for (i=cur,nr=0;i>0;i=rec[i])
        b[nr++]=i;
    for (i=nr-1;i>=0;i--)
        printf("%d ",a[b[i]]);
    printf("\n");
            
    return 0;
}