Cod sursa(job #209715)

Utilizator DraStiKDragos Oprica DraStiK Data 24 septembrie 2008 13:28:06
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
# include <stdio.h>
int n,max;
int a[100005],lung[100005],prec[100005];
void read ()
{
     int i;
     scanf ("%d",&n);
     for (i=1; i<=n; ++i)
         scanf ("%d",&a[i]);
}
void solve ()
{
     int i,j,best,ind;
     for (i=1; i<=n; ++i)
     {
         best=0;
         ind=0;
         for (j=1; j<i; ++j)
             if (a[i]>a[j] && lung[j]>best)
             {
                best=lung[i];
                ind=j;
             }
         lung[i]=best+1;
         prec[i]=ind;
     }
     for (i=1; i<=n; ++i)
         if (lung[i]>max)
         {
            max=lung[i];
            ind=i;
         }
    printf ("%d\n",max);
    while(prec[ind])
    {
        printf ("%d ",a[prec[ind]]);
        ind=prec[ind];
    }
int main ()
{
	freopen ("scmax.in","r",stdin);
	freopen ("scmax.out","w",stdout);
	read ();
	solve ();
    return 0;
}